enum Animal{
RABBIT, CAMEL, TIGER
}
이것들은
class Animal{
public static final animal RABBIT= new animal();
public static final animal CAMEL= new animal();
public static final animal TIGER= new animal();
private animal(){}
}
와 같다. 상수타입을 자바5 버전에 들어서 enum을 추가한 것이다.
생성자가 private이다. 이것은 클래스 animal를 인스턴스화 하지 못하게끔 의도한 것이다.
enum은 클래스이기 때문에 생성자를 가질 수 있다.
enum Animal{
RABBIT, CAMEL, TIGER;
Animal(){
System.out.println("Call Constructor "+this);
}
}
이 출력은 Call Constructor RABBIT/CAMEL/TIGER 이렇게 나오게 된다. 가진 필드의 수 만큼 호출이 된다.
enum Animal{
RABBIT("carrot"), CAMEL("water"), TIGER("stripe");
public String value;
Animal(String value;){
System.out.println("Call Constructor "+this);
this.value= value;
}
}
public class ConstantDemo {
public static void main(String[] args) {
Animal type = Animal.RABBIT;
switch(type){
case RABBIT:
System.out.println(100+" D, "+Animal.RABBIT.value);
break;
case CAMEL:
System.out.println(200+" D"+Animal.CAMEL.value);
break;
case TIGER:
System.out.println(300+" D"+Animal.TIGER.value);
break;
}
}
}
실행결과는 아래와 같다.
Call Constructor RABBIT
Call Constructor CAMEL
Call Constructor TIGER
100 D, carrot
이 녀석은 메서드를 가질 수가 있다. 물론 getter 또한 가질 수 있다.
Animal.RABBIT.getValue() 를 하면 carrot 을 return 하게된다.
Animal.values() 를 하면 열거된 모든 원소를 list에 담아 반환하게 된다.
'Spring' 카테고리의 다른 글
[Spring] PathVariable 사용법 (0) | 2020.09.15 |
---|---|
[Spring] UriComponentsBuilder 사용하기 (0) | 2020.09.15 |
스프링 시큐리티 denied Page 404 뜨는 이유 (0) | 2020.07.31 |
Spring Data JPA, Querydsl 조금 정리 (0) | 2020.07.21 |
java final static 붙이는 이유, lombok 어노테이션 (0) | 2020.07.17 |