enum Color
{
RED,GREEN,BLUE;
}
public class EnumDemo {
public static void main(String args[])
{
Color c=Color.RED;
System.out.println(Color.RED+""+Color.BLUE);
}
}
Enum类和enum关键字的区别
使用enum关键字可以定义一个枚举类型,那么实际上就相当于定义了一个类,此类继承了Enum类而已。
在Enum类的构造方法中是受保护的,实际上对于每一个枚举对象一旦声明之后,就表示自动调用此构造方法,所有的编号采用自动编号的方式进行。
enum Color
{
RED,GREEN,BLUE;
}
public class EnumDemo {
public static void main(String args[])
{
Color c=Color.RED;
System.out.println(Color.RED+""+Color.BLUE);
for(Color c1:Color.values())
{
System.out.println(c1);
//输出枚举值和其中的自动编号
System.out.println(c1.name()+"--->"+c1.ordinal());
}
}
}
类集对枚举的支持
EnumMap
EnumMap是Map的子类,与Map的操作是一致
import java.awt.Color;
import java.util.EnumMap;
import java.util.Map;
public class EnumMapDemo {
public static void main(String args[])
{
EnumMap<Color,String> eMap=new EnumMap<Color,String>(Color.class);
eMap.put(Color.RED, "红色");
eMap.put(Color.GREEN, "绿色");
eMap.put(Color.BLUE, "蓝色");
for(Map.Entry<Color, String> me:eMap.entrySet())
{
System.out.println(me.getKey()+"-->"+me.getValue());
}
}
}
EnumSet
EnumSet本身是Set接口的子类,但是在此类中并没有任何的构造方法定义,表示构造方法被私有化了。此类的方法都是静态的操作。
import java.awt.Color;
import java.util.EnumSet;
import java.util.Iterator;
public class EnumSetDemo {
public static void main(String args[])
{
//表示将全部的内容保存到集合
EnumSet<Color> eSet=EnumSet.allOf(Color.class);
Iterator<Color> iter=eSet.iterator();
while(iter.hasNext())
{
System.out.println(iter.next());
}
//表示此类型的空集合
//EnumSet<Color> eSet=EnumSet.noneOf(Color.class);
}
}
枚举的构造方法
可以在枚举中直接定义构造方法,但是一旦构造方法定义之后,则所有枚举对象都必须明确的调用此构造方法。
enum Color
{
RED("红色"),GREEN("绿色"),BLUE("蓝色");
private String name;
Color(String name)
{
this.name=name;
}
}
枚举中的构造方法为默认的private权限
System.out.println(c1.name()+"--->"+c1.ordinal()+"---->"c1.getName());
让枚举实现一个接口
一个枚举实现一个接口之后,各个枚举对象都必须实现接口中的抽象方法
interface Info
{
public String getColor();
}
enum Color implements Info
{
RED
{
public String getColor()
{
return "红色";
}
},
GREEN
{
public String getColor()
{
return "绿色";
}
},
BLUE
{
public String getColor()
{
return "蓝色";
}
};
}
public class EnumDemo5 {
public static void main(String args[])
{
for(Color c:Color.values())
{
System.out.println(c.ordinal()+"---->"+c.getColor()+"---->"+c.getName());
}
}
}
在枚举中定义抽象方法
在一个枚举中也可以定义多个抽象方法,枚举中的每个对象都必须单独实现。