Java枚举类"全方位"

本文介绍了枚举类型的各种用法,包括普通枚举、带有属性、构造器及抽象方法的枚举,并提供了一个具体示例。

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


普通类型的枚举类的创建

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();
}

程序输出结果:

周五

小总结:

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

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

Vue.js源码全方位深入解析最新下载地址.rar Vue.js源码全方位深入,帮你更深入了解vue 第1章 准备工作 介绍了 Flow、Vue.js 的源码目录设计、Vue.js 的源码构建方式,以及从入口开始分析了 Vue.js 的初始化过程。 第2章 数据驱动 详细讲解了模板数据到 DOM 渲染的过程,从 new Vue 开始,分析了 mount、render、update、patch 等流程。 第3章 组件化 分析了组件化的实现原理,并且分析了组件周边的原理实现,包括合并配置、生命周期、组件注册、异步组件。 第4章 深入响应式原理(上) 详细讲解了数据的变化如何驱动视图的变化,分析了响应式对象的创建,依赖收 集、派发更新的实现过程,一些特殊情况的处理,并对比了计算属性和侦听属性的实现,最后分析了组件更新的过程。 第5章 深入响应式原理(下) 详细讲解了数据的变化如何驱动视图的变化,分析了响应式对象的创建,依赖收集、派发更新的实现过程,一些特殊情况的处理,并对比了计算属性和侦听属性的实现,最后分析了组件更新的过程。 第6章 -编译(上) 从编译的入口函数开始,分析了编译的三个核心流程的实现:parse -> optimize -> codegen。 第7章 -编译(下) 从编译的入口函数开始,分析了编译的三个核心流程的实现:parse -> optimize -> codegen。 第8章 -扩展(上) 详细讲解了 event、v-model、slot、keep-alive、transition、transition-group 等常用功能的原理实现,该章节作为一个可扩展章节,未来会分析更多 Vue 提供的特性。 第9章 -扩展(中) 详细讲解了 event、v-model、slot、keep-alive、transition、transition-group 等常用功能的原理实现,该章节作为一个可扩展章节,未来会分析更多 Vue 提供的特性。 第10章 -扩展(下) 详细讲解了 event、v-model、slot、keep-alive、transition、transition-group 等常用功能的原理实现,该章节作为一个可扩展章节,未来会分析更多 Vue 提供的特性。 第11章 Vue-Router 分析了 Vue-Router 的实现原理,从路由注册开始,分析了路由对象、matcher,并深入分析了整个路径切换的实现过程和细节。 第12章 Vuex 分析了 Vuex 的实现原理,深入分析了它的初始化过程,常用 API 以及插件部分的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值