美文网首页首页推荐程序员
Java枚举类"全方位"

Java枚举类"全方位"

作者: 尽情的嘲笑我吧 | 来源:发表于2017-10-07 08:11 被阅读0次

作为一种长度固定,数据未定的一种存储数据集的数据类型,枚举类有如下方法可供参考。


普通类型的枚举类的创建

protected enum ColorEnum{
        red,orange,yellow,green,blue,purple
    }

是的,就是这样,声明就可以了。


既然有普通类型,当然也会有不普通类型的了,接下来的是可以在枚举类中添加属性的枚举,如下

public enum SeasonEnum{
        spring,summer,fall,winter;
        private final static String position="test";
        
        public static SeasonEnum getSeason(){
            if(position.equals("test")){
                return summer;
            }else{
                return winter;
            }
        }
    }

其中作为属性的position便是外界对此枚举类操作的一个“算子”,当然也可以用普通的枚举方式来对枚举进行处理


然后是带有构造器的枚举类的使用
需要注意的是,在使用构造器的时候,要带参数就都带,否则就都不带,因为声明了带参数的构造器后,默认的无参的构造器将不再起作用

public enum GenderEnum{
        
        MAN("MAN"),WOMAN("WOMAN");
        
        //代表一个成员变量,便于赋值和获取数据
        private String value;
        
        GenderEnum(String gender){
            this.value=gender;
        }
        //成员变量值的get方法
        public String getValue(){
            return value;
        }
    }

带有抽象方法的枚举类的使用

public enum PersonInfo{
        NAME{public String getName(){return "S**";}},
        AGE{public String  getName(){return "**";}},
        ADDRESS{public String getName(){ return "*南省**市**县";}},
        E_MAIL{public String getName(){return "1064*****2@qq.com";}};
        //这个方法就是一个抽象的方法
        public abstract String getName();
    }

下面是一个具体的小例子:

package test;

public class Test {

    public static void main(String[] args) {
        System.out.println(WeekDay.FRIDAY.getInfo());
    }
}
enum WeekDay{
    MONDAY("周一"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,TWESDAY("周二"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,WENDESDAY("周三"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,YHURSDAY("周四"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,FRIDAY("周五"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,SATASDAY("周六"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }}
    ,SUNDAY("周日"){

        @Override
        public String getInfo() {
            // TODO Auto-generated method stub
            return this.getValue();
        }};
    private String value;
    public String getValue() {
        return value;
    }

    private WeekDay(String value){
        this.value = value;
    }
    
    public abstract String getInfo();
}

程序输出结果:

周五


小总结:

  • 其实枚举也就是一个特殊的类,其中的实例就是其对象,其中的成员变量和成员函数也都是属于每一个实例。
  • 通过这样的方式,我们就可以使枚举类拥有更多的信息(如果只设置一个实例,那么这就是一个单例模式的较好的体现,可以保证在内存中只有一个这样的对象存在!
  • 对每一个实例都实现了抽象的方法的目的就是让每一个对象携带自身具备的唯一的信息。

总结:
对于枚举类的使用,有普通类型,带有变化属性,带有构造器,带有抽象方法的枚举等等。各有各的特点,使用的时候视情况而定!还可以应用于单态模式,岂不快哉?

相关文章

  • Java枚举类"全方位"

    作为一种长度固定,数据未定的一种存储数据集的数据类型,枚举类有如下方法可供参考。 普通类型的枚举类的创建 是的,就...

  • 枚举学习

    java enum枚举类 enum(枚举)类介绍 **java枚举类是一组预定义常量的集合,使用enum关键字声明...

  • Java枚举

    Java中的每个枚举都是java.lang.Enum的final子类,枚举类中的每个枚举常量都是该枚举类的一个实例...

  • Java枚举类

    枚举其实是个特殊的 Java 类,创建枚举需用enum关键字,枚举类都是java.lang.Enum的子类,jav...

  • 枚举

    一、概念: 实例有限而且固定的类,在java里被称为枚举类。 二、通过enum实现枚举类 使用enum定义的枚举类...

  • 店铺注册的dto(页面数据层)

    ShopExecution.java ShopStateEnum.java使用枚举类表示

  • 5 枚举类

    5.1 枚举类概述 Java5新增的enum关键字,用于定义枚举类。 枚举类是特殊的类,可以有自己的成员变...

  • java拾遗第一天

    枚举类(enum) 1.1 枚举类就是一个特殊的java类 1.2 枚举类的实例(对象)个数是固定的,一旦创建完成...

  • Enum

    java定义新的类型的方式:类、接口、枚举 取出枚举的全部类容: 类集对枚举的支持:EnumMap、EnumSet...

  • java枚举类

    应用 实现原理 编译器会生成一个继承enum接口的Type类,对编译的Type.class使用jad反编译可以得到

网友评论

    本文标题:Java枚举类"全方位"

    本文链接:https://www.haomeiwen.com/subject/pnbdyxtx.html