1.定义
枚举类型是一种特殊数据类型,能够为一个变量定义一组预定义的常量。变量必须等于为其预定义的值之一。
枚举是特殊的类,可以拥有成员变量和方法。
2.使用
2.1在JDK1.5之前
采用的是将构造方法改为private,再定义静态常量对象。
class Person1{
private final String name;
private final int age;
@Override
public String toString() {
return "Person1{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
private Person1(String name, int age) {
this.name = name;
this.age = age;
}
public static final Person1 STUDENT = new Person1("student",18);
public static final Person1 TEACHER = new Person1("teacher",26);
}
2.2JDK1.5之后
使用enum关键字
enum Person2{
STUDENT("student",18),
TEACHER("teacher",26);
private final String name;
private final int age;
// @Override
// public String toString() {
// return "Person1{" +
// "name='" + name + '\'' +
// ", age=" + age +
// '}';
// }
Person2(String name, int age) {
this.name = name;
this.age = age;
}
}
1.5之前的就是一个普通的类,继承自Object,所以打印的时候输出的是地址值,需要重写toString()方法,1.5之后使用的是enum关键字,此时继承自Enum类,Enum中重写了toString(),打印的是枚举的变量名。
3.实现接口
enum Person3 implements MyInterface{
STUDENT("student",18){
@Override
public void show() {
System.out.println("i am student");
}
},
TEACHER("teacher",26){
@Override
public void show() {
System.out.println("i am teacher");
}
};
private final String name;
private final int age;
Person3(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public void show() {
System.out.println(this.name);
System.out.println("i am person3");
}
}
interface MyInterface{
void show();
}
除了正常的实现接口,并实现接口中的方法以外,还可以在枚举对象里为每个对象都实现各自的接口。
网友评论