枚举类型

2018-07-28 06:12:56来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Enum关键字可以将有限个具名的值组成的集合创建为一种新的类型,即枚举类型

1、枚举类型的特性

pulic SimpleEnumUse{
  ONE,TWO,THREE
}
  • 使用Enum关键字修饰的类会继承Enum类,该类中包含了多种方法,枚举类不能继承其它类。
  • 编译器根据关键字Enum会产生某些编译器的行为,比如添加values静态方法、valueOf静态方法。

values() :返回枚举类中的所有枚举实例;

valueOf(String) :根据传入的参数返回同名的枚举实例;注:仅一个输入参数

2、Enum添加属性或者方法

  • 只能在所有枚举实例之后添加属性和方法,且最后一个实例结束需添加分号区分,否则编译器报错。

如过添加了属性及对应的构造器,在枚举类型中可以:

pulic SimpleEnumUse{
  ONE("one"),TWO("two"),THREE;
    private String aliaName;
  private SimpleEnumUse(){

  }
    private SimpleEnumUse(String aliaName){
    this.aliaName=aliaName;
  }
}
  • 可以为每个枚举实例编写自己的方法
    • 在枚举类型中添加抽象方法(每个枚举实例必须提供实现)或者非抽象方法(可覆盖,不覆盖直接调用该方法)
    • 如果直接在枚举实例中添加一个在枚举类型中没有定义的方法,编译器不会报错,但得到枚举实例后引用不到该实例方法。
public enum SimpleEnumUse {
    ONE("one"){
        public void pri(){
            super.pri();
        }
    },
    TWO("two"),
    THREE,
    FOUR("four"),
    FIVE("five");

    private String str;
    private SimpleEnumUse(){

    }
    private SimpleEnumUse(String str){
        this.str=str;
    }
    public void pri(){
        System.out.println("hahah2");
    }
}

3、枚举类中方法的覆盖

枚举类中可以覆盖Enum的非静态方法,比如toString()方法,未覆盖之前输出的是枚举实例名称,可以覆盖输出更为具体的信息。

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:在程序开发中,++i 与 i++的区别

下一篇:Zookeeper-watcher机制源码分析(一)