枚举

枚举:即规定好的取值范围所有的内容只能从指定范围内取得。

1Java中两种方式定义新类型:类和接口。

接口

class Color

{

public static final Color RED=new Color("红色");

public static final Color GREEN=new Color("绿色");

public static final Color BLUE=new Color("蓝色");

    private String name;

private Color(String name){

this.setName(name);

}

public String getName(){

return name;

}

 

public void setName(String name){

this.name=name;

 

}

public static Color getInstance(int i){

switch(i){

case 1:{

return RED;

}

case 2:{

return GREEN;

}

case 3:{

return BLUE;

}

default:{

return null;

}

}

}

}

public interface Color

{

public static final int RED=1;

    public static final int GREEN=2;

public static final int BLUE=3;

}

2、enum关键字定义枚举类型:public enum 枚举类名枚举对象1...枚举对象n;}

     使用:枚举.variable形式取出枚举中指定内容。

           枚举.values()形式将全部枚举类型变为对象数组形式,之后直接使用foreach进行输出。

           可以将内容直接在switch 语句上使用。但是一定不能在每个枚举类型值前面加上枚举类型的类型名(如:Color.BLUE)否则编译错误。

3、Enum类:使用enum声明的枚举类型相当于定义一个类,此时默认继承java.lang.Enum类。Enum类实现了ComparableSerializable两个接口,证明枚举类型可以使用比较器和进行序列化操作。

       Protected EnumString name,int ordinal:构造方法接收的两个参数为枚举的名称和枚举序号(从0开始依次编号)。枚举类建立完成后,实际上会默认调用Enum类的构造方法,为其赋值。

       在枚举定义属性及自己的构造方法时,一旦定义有参构造之后,在声明枚举对象时就必须明确调用构造方法并传递参数。

enum Color{

RED("红色"),GREEN("绿色"),BLUE("蓝色");

 

private Color(String name){

this.setName(name);

}

private String name;

public String getName(){

 

return name;

}

public void setName(String name){

this.name=name;

}

}

       除了通过“枚举类.枚举对象”形式取得每个枚举对象,也可以通过Enum类定义的“枚举类.valueOf()”方法根据名字获得对象。

Color c=Enum.valueOf(Color.class,"BLUE");

        Enum类实现了Comparable接口,枚举类的内容本身可以进行排序(按照ordinal属性排序)

4、类集对枚举的支持---EnumMapEnumSet

   <1>EnumMapMap接口的子类,本身可以以Map的形式进行操作(即”key->value”)

         Map<枚举类1String> 对象名=new EnumMap<枚举类1String>(枚举类.class)

   <2>EnumSetSet接口的子类,里边的内容无法重复。使用EnumSet时不能直接使用关键字new为其进行实例化,而是使用本类中提供的静态方法。(EnumSet<枚举类名对象名=null;)

       静态方法:对象名=EnumSet.allOf(枚举类名.class);--将枚举类中的全部内容设置到EnumSet集合中。

                 对象名=EnumSet.Of(枚举类名.枚举对象);--将枚举类中的一个内容设置到EnumSet集合中。

                对象名=EnumSet.noneOf(枚举类名.class);--将集合设置成只能增加指定枚举类型的集合,但并不设置任何的内容到集合中。

                对象名=EnumSet.complementOf(同一枚举类的其他EnumSet对象old);--创建不包含old中元素的集合。

5、枚举类实现一个接口:枚举类也可以实现一个接口,因为接口中存在抽象方法,所以枚举类中的每个对象都必须实现接口中的抽象方法。

6、枚举类中定义抽象方法:枚举类中也可以定义抽象方法,但每个枚举的对象都必须实现此抽象方法。

7、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值