枚举相当于一个类,所以它也是有构造方法的。如果显式地写出了枚举的构造方法,那么就必须在创造枚举对象时,相应地显式引用,否则就会出错。这也是Java的运行机制之一。
枚举中的每一个元素,其实就相当于一个对象的引用,这个元素可以有方法和字段。比如:
enum color{ red("hongse"),yellow("huangse"),green("lvse"),black("heise");
private String name; //枚举的字段
public String getName(){ //枚举的方法,得到枚举元素的name字段值
return name;
}
public void setName(String name){ //枚举的方法,设定枚举元素的name字段的值
this.name = name;
}
color(String name){ //枚举的构造方法,既然显示声明了,创造枚举元素时就要显示调用,不然会出错
this.setName(name);
}
}
public class demoEnum{
public static void main(String[] args){
}
}
枚举的接口
当一个枚举实现了一个接口之后,枚举中的每一个对象都要分别实现接口中的所有抽象方法。比如:
先写一个抽象接口:
package testInterface;
public interface demoInterface {
public String getColor(); //抽象接口的抽象方法getColor
}
再写一个枚举实现这个接口
package testInterface;
public enum Color implements demoInterface {
red{ //枚举中的元素
public String getColor() { //枚举对象,实现抽象接口的方法getColor
return "hongse";
}
},
green{
public String getColor() { //枚举对象分别实现抽象接口的方法
return "lvse";
}
}
}
再写一个类,输出枚举中的元素和元素的字段值
package testInterface;
public class testInterface {
public static void main(String[] args) {
for(Color c:Color.values()){ //使用foreach循环,遍历枚举中的元素
System.out.println(c+" "+c.getColor()); //输出枚举的元素值,并调用getColor方法输出枚举的字段值
}
}
}
除了实现抽象接口,枚举自己内部也可以定义抽象方法。一旦枚举自己也定义了抽象方法,那么枚举中的每个对象都要分别的实现这些方法,不然会报错。