• 枚举和注解01:自定义类实现枚举


    自定义类实现枚举

    package com.enum_;
    
    public class Enumeration01 {
        public static void main(String[] args) {
            //使用
            Season spring = new Season("春天", "温暖");
            Season winter = new Season("冬天", "寒冷");
            Season autumn = new Season("秋天", "凉爽");
            Season summer = new Season("夏天", "炎热");
            autumn.setName("~~");
            autumn.setDesc("很热");
            //因为对于季节而已,对象是固定的四个,不会有更多
            //按这个设计思路,不能体现出季节是固定的四个对象。
            //因此这样的设计不好===> 枚举类[枚:一个一个举:例举,即把具体的对象一个一个例举出来的类就称为枚举类
            Season other = new Season("~天", "~~");
    
        }
    }
    class Season{
        private String name;
        private String desc;
    
        public Season(String name, String desc) {
            this.name = name;
            this.desc = desc;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getDesc() {
            return desc;
        }
    
        public void setDesc(String desc) {
            this.desc = desc;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    因为对于季节而已,对象是固定的四个,不会有更多按这个设计思路,不能体现出季节是固定的四个对象。
    因此这样的设计不好===> 枚举类[枚:一个一个举:例举,即把具体的对象一个一个例举出来的类就称为枚举类

    解决方案-- n

    • enumeration – enum
    • 枚举是一组常量的几何。
    • 可以理解为:枚举属于一种特殊的类,里边只包含了一组有限的特定的对象。

    枚举的两种实现方式

    • 1、自定义枚举
    • 2、使用enum关键字实现枚举

    自定义实现枚举应用案例

    • 1、不需要提供setXxx方法,因为枚举对象值通常为只读
    • 2、对枚举对象/属性使用 final+ static共同修饰,实现底层优化
    • 3、枚举对象名通常使用全部大写,常量的命名规范。
    • 4、枚举对象根据需要,也可以有多个属性// EnumerationO2.java
    package com.enum_;
    
    public class Enumeration02 {
        public static void main(String[] args) {
    
            System.out.println(Season.AUTUMN);
            System.out.println(Season.SPRING);
            System.out.println(Season.WINTER);
            System.out.println(Season.AUTUMN);
        }
    }
    
    //演示自定义枚举实现
    class Season{
        private String name;
        private String desc;
        //定义个四个对象
        public static final Season SPRING = new Season("春天", "温暖");
        public static final Season WINTER = new Season("冬天", "寒冷");
        public static final Season AUTUMN = new Season("秋天", "凉爽");
        public static final Season SUMMER = new Season("夏天", "炎热");
    
        //1、将构造器私有化,防止直接new出来
        //2、去掉setXxx相关的方法,防止属性被修改
        //3、在Season内部,直接创建固定的对象
        //4、优化一下,可以再加一个final 
        private Season(String name, String desc) {
            this.name = name;
            this.desc = desc;
        }
    
        public String getName() {
            return name;
        }
    
    
    
        public String getDesc() {
            return desc;
        }
    
        @Override
        public String toString() {
            return "Season{" +
                    "name='" + name + '\'' +
                    ", desc='" + desc + '\'' +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    总结

    • 1、构造器私有化
    • 2、本类内部创建一组对象
    • 3、对外暴露对象(通过为对象添加public final static修饰符)
    • 4、可以提供get方法,但是不要提供set
  • 相关阅读:
    python将红底证件照转成蓝底
    ArrayList的初始容量是多少。
    人工神经网络的基本模型,人工神经网络数学模型
    C++那些事儿 —— 名字空间(三分钟带你了解using namespace std到底是个啥?)
    winform+access超市管理信息系统
    不同语言采集【淘宝1688拼多多API】平台数据的方式
    老卫带你学---leetcode刷题(128. 最长连续序列)
    纯前端模板文件下载如何精确控制下载的文件名字
    博弈论——斯塔克尔伯格模型(Stackelberg model)
    OpenGL ES 名词解释(二)
  • 原文地址:https://blog.csdn.net/tianyi520jx/article/details/126361566