创建 enum
enum Level {
SMALL,
MEDIUM,
LARGE
}
创建带有自定义参数的enum
public class Level {
SMALL (1),
MEDIUM (10),
LARGE (20);
private int value;
private Level(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue() {
this.value = value;
}
public static void main(String[] args) {
System.out.println(Level.SMALL);
System.out.println(Level.SMALL.name());
System.out.println(Level.SMALL.toString());
System.out.println(Level.values()[2]);
System.out.println(Level.SMALL.getValue());
System.out.println(Level.valueOf("SMALL").getValue());
System.out.println(Enum.valueOf(Level.class, "SMALL"));
System.out.println(Level.SMALL.ordinal());
System.out.println(Level.LARGE.ordinal());
System.out.println(Level.SMALL.compareTo(Level.LARGE));
System.out.println(Level.LARGE.compareTo(Level.SMALL));
System.out.println(Level.SMALL.equals(Level.LARGE));
}
}
输出
SMALL
SMALL
SMALL
LARGE
1
1
SMALL
0
2
-2
2
false
1.5之前创建enum
现在也可以使用
public class Level {
public static final Level SMALL = new Level(1);
public static final Level MEDIUM = new Level(10);
public static final Level LARGE = new Level(20);
private int value;
private Level(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue() {
this.value = value;
}
}
enum中接口的使用
interface Ldisplay {
void display();
}
public enum Level implements Ldisplay {
SMALL (1) {
@Override
public void display() {
System.out.println("the value of small is 1");
}
},
MEDIUM (10) {
@Override
public void display() {
System.out.println("the value of medium is 10");
}
},
LARGE (20) {
@Override
public void display() {
System.out.println("the value of large is 20");
}
};
private int value;
private Level(int value) {
this.value = value;
}
public static void main(String[] args) {
Level.LARGE.display();
}
}
注意事项
- 一旦定义了枚举,最好不要妄图修改里面的值,除非修改是必要的。
- 枚举类默认继承的是java.lang.Enum类而不是Object类。
- 枚举类不能有子类,因为其枚举类默认被final修饰。
- 只能有private构造方法。
- switch中使用枚举时,直接使用常量名,不用携带类名。
- 不能定义name属性,因为自带name属性。
- 不要为枚举类中的属性提供set方法,不符合枚举最初设计初衷。