interface에서 field를 만들면 public static final이 암시가 된다.
interface FRUIT {
int APPLE=1, PEACH=2, BANANA=3;
}
.
.
int type = FRUIT.APPLE;
==
private final static int FRUIT_APPLE = 1;
private final static int FRUIT_PEACH = 2;
private final static int FRUIT_BANANA = 3;
.
.
int type = FRUIT_APPLE;
enum은 열거형 (enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이라고 할 수 있다.
class Fruit{
public static final Fruit APPLE = new Fruit();
public static final Fruit PEACH = new Fruit();
public static final Fruit BANANA = new Fruit();
private Fruit(){}
}
==
enum Fruit{
APPLE, PEACH, BANANA;
}
enum Fruit {
APPLE("red"), PEACH("pink"), BANANA("yellow");
private String color;
public String getColor() {
return this.color;
}
Fruit(String color) {
this.color = color;
}
}
public class ConstantDemo {
public static void main(String[] args) {
for(Fruit f : Fruit.values()) {
System.out.println (f+", "+f.getColor());
}
Fruit type = Fruit.APPLE;
switch (type) {
case APPLE:
System.out.println(57+"kcal, color "+ Fruit.APPLE.getColor());
break;
case PEACH:
System.out.println(34+"kcal, color "+ Fruit.PEACH.getColor());
break;
case BANANA:
System.out.println(93+"kcal, color "+ Fruit.BANANA.getColor());
break;
}
}
}
어떤 상수들이 있는 지는 몰라도 배열처럼 꺼내서 쓸 수 열거를 할 수 있다.