웹풀스택 공부 중
15 - 6. Java - ENUM 본문
ENUM
분류된 객체 모음
특정 타입의 객체들을 한곳에 묶어둔다. “Categorized 객체”
사용목적
메서드 수행 시, Parameter에 너무 많은 경우의 수가 발생하는것을 방지
Parameter(값)의 종류나 Return value의 종류를 제약하고 싶을때 사용한다
경우의 수?
public static void createMessage(**String** message) { System.out.println("당신에게 메세지를 보냅니다. : " + message); }
이런식 일때, String message에 모든 메세지를 보낼 수 있다
예시.) “사랑합니다”나, “감사합니다” 만으로 줄이고 싶을 때 Enum을 사용하여 경우의 수를 줄일 수 있다
@Getter @RequiredArgsConstructor @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public enum MessageType { LOVE("사랑합니다."), THANKS("감사합니다."); String message; } // Calling the corresponding type of it: public static void createMessage(**MessageType type**) { System.out.println("당신에게 메세지를 보냅니다. : " + **type.getMessage()**); }
한번 만든 Enum 객체는 바꿀일이 없기때문에
final
도 붙여준다
Enum으로 Parameter값에 대한 제약뿐만 아니라, Method 내 로직에서 활용할 값에 대한 제약도 설정이 가능하다
예시)
“사랑합니다.”
라는 메세지를 보낼때는 (2) SMS 메세지로 전송해야한다.*
“감사합니다.”
라는 메세지를 보낼때는 *(2) 이메일로 전송해야한다.@Getter @RequiredArgsConstructor @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public enum MessageType { LOVE("사랑합니다.", SendMediaType.SMS), THANKS("감사합니다.", SendMediaType.EMAIL); String message; SendMediaType media; } // 메서드 로직 활용 @Getter @RequiredArgsConstructor @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public enum SendMediaType { SMS("010-0000-0000"), EMAIL("aaron@example.com"); String sender; } // Calling it public static void createMessage(MessageType type) { System.out.println("당신에게 메세지를 보냅니다. : " + type.getMessage()); System.out.println("다음으로부터 전송되었습니다. : " + type.getMedia().getSender()); }
반응형
'웹개발 > Java' 카테고리의 다른 글
15 - 8. Java - 익명 클래스 & 익명 구현 객체 (1) | 2024.11.14 |
---|---|
15 - 7. Java - Design Pattern & SOLID Principle (2) | 2024.11.04 |
15 - 5. Java - Abstract Class vs Interface (0) | 2024.11.04 |
15 - 4. Java - Generic & 자료 구조 (0) | 2024.11.04 |
15 - 3. Java - Static (0) | 2024.11.04 |