안녕하세요. 오늘은 java의 enum에 대해서 알아보도록 하겠습니다. java에서 정보를 나열할 때 enum class를 많이 사용합니다. enum은 java7에서 부터 등장하기 시작했는데요.
그거 아셨나요 ? enum은 Object Class를 상속 받은 class입니다. 우리가 기본적으로 사용하는 enum 이라고 선언하는 것은 사실 enum class를 상속받아 사용하는 것입니다.
Enum 기본
enum을 기본적으로 선언하면 아래와 같습니다.
public enum CompanyType {
KAKAO, Naver, Coupang
}
그리고 사용한다면 아래와 같이 사용할 수 있습니다. 아래 enum Type에는 KAKAO, Naver, Coupuang을 set하고 사용할 수 있습니다.
public class Account {
private String id;
private String pw;
private CompanyType type;
public Account(String id, String pw, CompanyType type) {
this.id = id;
this.pw = pw;
this.type = type;
}
}
public static void main(String[] args) {
Account account = new Account("id", "pw", CompanyType.KAKAO);
}
enum은 위에서 설명하길 class를 상속 받은 것이라고 했습니다. 그렇기 때문에 enum에 parameter를 넣어 사용할 수 도 있으니 다양한 표현 방법을 함께 사용할 수 있다는 것도 장점입니다.
Enum Default method
그렇다면 Enum class의 기본 메서드에 대해서 알아보도록 하겠습니다. enum class는 Object class를 상속하고 있으며 enum 자신만의 기본 method를 가지고 있습니다.
- values : 열거된 모든 원소를 배열에 담에 순서대로 반환
public enum CompanyType {
KAKAO, Naver, Coupang
public static void printAll() {
for(CompanyType type : values()) {
System.out.println(type);
}
}
}
values 메서드는 위와 같이 사용할 수 있습니다. CompanyType#printAll
메서드를 위와 같이 정의하고 타 메서드에서 호출하면 순환하며 아래와 같이 출력되어집니다.
KAKAO
Naver
Coupang
- ordinal : 원소에 열거된 순서를 정수 값으로 반환
public enum CompanyType {
KAKAO, Naver, Coupang
public static void printAll() {
for(CompanyType type : values()) {
System.out.println(type.ordinal());
}
}
}
ordinal 메서드는 c/c++ 등의 enum과 같이 순서대로 int형으로 반환합니다. 그래서 KAKAO, Naver, Coupang 순서대로 1, 2, 3이 매핑됩니다. 위의 printAll은 아래와 같이 출력됩니다.
1
2
3
- valueOf : 매개변수로 주어진 String과 열거형에서 일치하는 이름을 갖는 원소를 반환 (주어진 String과 일치하는 원소가 없는 경우 IllegalArgumentException 예외 발생)
public enum CompanyType {
KAKAO, Naver, Coupang
public static CompanyType convertToType(String str) {
return valueOf(str);
}
}
public static void main(String[] args) {
CompanyType type = CompanyType.convertToType("KAKAO");
System.out.println(type);
System.out.println(type.ordinal());
}
valueOf 메서드는 String을 enum에 맞는 Type으로 변경시켜주는 메서드입니다. 위와같이 사용할 수 있고 main에서 println
에 대해서 아래와 같이 결과가 나옵니다.
KAKAO
1
마무리
이렇게 해서 Java enum과 그 기본 메서드에 대해서 알아보았습니다. enum은 java를 사용하며 상당히 많이 사용하는 class 입니다. 유용한 메서드를 활용해 더욱 가독성 있는 코드를 작성하길 바랍니다.
감사합니다.
참조
'language, framework, library > Java' 카테고리의 다른 글
[java] exception 처리하기 - 실전편 (0) | 2020.04.19 |
---|---|
[java] exception 처리하기 - 이론편 (0) | 2020.04.07 |
[Java 8] Java 8, Stream의 Collectors (0) | 2019.11.29 |
[Java 8] Java 8 Stream API Tutorial (0) | 2019.11.26 |
[Java 8] Java 8에서의 새로운 특징 (0) | 2019.11.19 |
댓글