package study.first;
public class Study {
public static void main(String[] args) {
}
}
enum FinalValues {
// enum 클래스의 열거 상수 (자동으로 public static final로 선언)
CLOCK_SIZE(100), CLOCK_COLOR("White"), BOOK_SIZE(200), BOOK_COLOR("Blue");
// 값을 담을 필드 생성(private 캡슐화)
private int size;
private String color;
// size 생성자 선언
FinalValues(int size) {
this.size = size;
}
// color 생성자 선언
FinalValues(String color) {
this.color = color;
}
// size getter
int getSize() {
return size;
}
// color getter
String getColor() {
return color;
}
}
[ Enum Class 인스턴스 생성 ]
- class.상수이름
- class.valueOf("상수이름") 메소드
둘 다 같은 방식으로 인스턴스를 만들 수 있지만, valueOf 메소드를 사용하면 String 변수를 사용해서 인스턴스를 생성할 수 있습니다. 조건에 따라 생성자를 달리해야 한다면 메소드를 이용하는 것이 효율적입니다.
// Enum Class 인스턴스 생성
FinalValues p = FinalValues.CLOCK_SIZE;
String name = "CLOCK_SIZE";
FinalValues p = FinalValues.valueOf(name);
[ 상수 이름을 가져오는 방법 ]
- 인스턴스 자체가 상수 이름을 반환
- 인스턴스.name() 메소드
- 인스턴스.toString() 메소드
세 가지 모두 상수 이름을 가져올 수 있습니다. 길게 쓸 필요없이 그냥 인스턴스 자체를 사용하면 편리합니다.
public static void main(String[] args) {
// Enum Class 인스턴스 생성
FinalValues p = FinalValues.CLOCK_SIZE;
// 상수 이름 출력
System.out.println(p);
System.out.println(p.name());
System.out.println(p.toString());
}
[ 열거 상수의 위치값을 가져오는 방법 ]
- 인스턴스.ordinal() 메소드
열거 상수가 순서대로 나열되어 있고, 리스트와 같이 0부터 시작합니다. 해당 상수가 몇 번째 상수인지 값을 반환합니다.
public static void main(String[] args) {
// Enum Class 인스턴스 생성
FinalValues p = FinalValues.CLOCK_SIZE;
// 상수 위치 출력
System.out.println(p.ordinal());
}
[ 열거 상수의 상대적 위치를 알아내는 방법 ]
- 인스턴스.compareTo(클래스.상수이름) 메소드
compareTo 메소드에 전달한 인자값(상수이름)을 기준으로, 해당 인스턴스가 가진 상수의 상대적 위치를 반환합니다. -2는 BOOK_SIZE보다 두 번째 앞에 위치한다는 의미입니다.
public static void main(String[] args) {
// Enum Class 인스턴스 생성
FinalValues p = FinalValues.CLOCK_SIZE;
// 상대적 위치 정보 출력
System.out.println(p.compareTo(FinalValues.BOOK_SIZE));
}
[ 모든 열거 상수를 알아내는 방법 ]
- 인스턴스.values() 메소드
해당 인스턴스의 Enum Class가 가지고 있는 모든 상수이름과 값을 불러올 수 있습니다. 리스트에 넣어주면 자동 생성됩니다.
public static void main(String[] args) {
// Enum Class 인스턴스 생성
FinalValues p = FinalValues.CLOCK_SIZE;
// 열거 상수 리스트 생성
FinalValues[] list = FinalValues.values();
// 리스트 출력
for (int i = 0; i < list.length; i++) {
System.out.print (list[i] + " : ");
if (list[i].getSize() != 0)
System.out.println(list[i].getSize());
else if (list[i].getColor() != null)
System.out.println(list[i].getColor());
}
}
'■ JAVA > Study' 카테고리의 다른 글
[JAVA] 컬렉션 프레임워크(컬렉션 API)★★★★(이거 보기)★★ (0) | 2021.03.03 |
---|---|
[JAVA] java.util.StringTokenizer 주요 메소드 [1/1] (0) | 2021.03.01 |
[JAVA] java.lang.Math (수학계산) 주요 메소드 [1/1] (0) | 2021.02.27 |
[JAVA] java.lang.StringBuilder (문자열) 주요 메소드 [2/2] (0) | 2021.02.25 |
[JAVA] java.lang.StringBuilder (문자열) 주요 메소드 [1/2] (0) | 2021.02.25 |