반응형
Enum의 기본적인 장점들
- 문자 열과 비교해 IDE의 적극적인 지원을 받을 수 있습니다.
- 자동완성, 오타검증, 텍스트 리팩토링 등등
- 허용 가능한 값들을 제한 할 수 있습니다.
- 리펙토링 시 변경 범위가 최소화 됩니다.
- 내용의 추가가 필요하더라도, Enum 코드 외에 수정할 필요가 없습니다.
Enum을 사용하는 이유는 지저분한 코드들을 모두 지우고(예를들면 if(any || any || ... ) 등등의 긴 문장) 한 곳에서(Enum) 모든 정리를 끝내고 값을 내주는것, 확실하게 명시된것만 사용할 수 있도록 하는것이 유용한것같습니다.
값이 변하는것들을 사용 할 용도는 절대 아닌것으로 보이고 setter는 사용하지않고 getter만 사용하는것이 바람직해보입니다.
Enum을 사용해보도록 하겠습니다.
생성시에는 Enum을 선택해주시면 됩니다.
ErrorCode.java
package com.example.base.arearch;
import lombok.Getter;
public enum ErrorCode {
BAD_REQUEST(400, "A1", "Bad request"),
UNAUTHORIZED(401, "A2", "Unauthorized"),
NOT_FOUND(404, "A3", "Not found"),
INTERNAL_SERVER_ERROR(500, "A4", "internal server error");
/* STATUS */
@Getter
private int status;
/* CODE */
@Getter
private final String code;
/* MESSAGE */
@Getter
private final String message;
private ErrorCode(int status, String code, String message) {
this.status = status;
this.code = code;
this.message = message;
}
public static void main(String[] args) {
System.out.println("========================================");
ErrorCode errorCode = ErrorCode.BAD_REQUEST;
System.out.println("ErrorCode errorCode = ErrorCode.BAD_REQUEST;");
System.out.println("errorCode.getStatus() : " + errorCode.getStatus());
System.out.println("errorCode.getMessage() : " + errorCode.getMessage());
System.out.println("errorCode.getCode() : " + errorCode.getCode());
System.out.println("========================================");
System.out.println();
System.out.println("========================================");
errorCode = ErrorCode.NOT_FOUND;
System.out.println("errorCode = ErrorCode.NOT_FOUND;");
System.out.println("errorCode.getStatus() : " + errorCode.getStatus());
System.out.println("errorCode.getMessage() : " + errorCode.getMessage());
System.out.println("errorCode.getCode() : " + errorCode.getCode());
System.out.println("========================================");
}
}
실행결과입니다.
ManagementBank.java
package com.example.base.arearch;
import java.util.List;
import java.util.Arrays;
public enum ManagementBank {
AREA1_BANK(43, Arrays.asList("KB", "NH")),
AREA2_BANK(55, Arrays.asList("기업", "신한")),
AREA3_BANK(313, Arrays.asList("하나", "우리")),;
private int managementCode;
private List<String> bankList;
private ManagementBank(int managementCode, List<String> bankList) {
this.managementCode = managementCode;
this.bankList = bankList;
}
public static ManagementBank findByBankName(String bankName) {
return Arrays.stream(ManagementBank.values())
.filter(managementBank -> managementBank.searchBank(bankName))
.findAny()
.orElse(null);
}
public boolean searchBank(String bankName) {
return bankList.stream().anyMatch(bank -> bank.equals(bankName));
}
public static void main(String[] args) {
System.out.println("==================================");
System.out.println("findByBankName(\"KB\") : " + findByBankName("KB"));
System.out.println("==================================");
System.out.println();
System.out.println("==================================");
System.out.println("findByBankName(\"하나\") : " + findByBankName("하나"));
System.out.println("==================================");
System.out.println();
System.out.println("==================================");
System.out.println("findByBankName(\"하\") : " + findByBankName("하"));
System.out.println("==================================");
}
}
실행 결과입니다.
ReferenceLink :
https://woowabros.github.io/tools/2017/07/10/java-enum-uses.html
https://itmining.tistory.com/149
반응형
'🖥Web > 🔥Java' 카테고리의 다른 글
[Java] 간단한 채팅 소켓통신 (Thread, Runnable, BufferedReader, BufferedWriter, InputStreamReader, OutputStreamWriter, Socket, ServerSocket) (0) | 2022.10.23 |
---|---|
[Java] 스페이스맨 게임, 주의! 코드 엉망 (0) | 2021.11.21 |
[Java] String, StringBuilder, StringBuffer의 차이 (0) | 2020.06.05 |
[JAVA] 추상클래스와 인터페이스의 차이 (0) | 2020.05.25 |
[JAVA] URL 코드보기 (0) | 2020.03.18 |