java中的自定义枚举类

自定义枚举类有两种写法

 

第一种写法:

复制代码
class Season {
    private String name;
 
    //在 Season 内部,直接创建固定的对象 ,
    //优化,可以加入 final 修饰符
    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("夏天");
 
    //将构造器私有化,为了防止直接 new
    private Season(String name) {
        this.name = name;
    }
 
    //去掉 setXxx 方法, 防止属性被修改,只保留getXxx方法,用于读取
    public String getName() {
        return name;
    }
 
    //重写toString()方法,用于输出
    @Override
    public String toString() {
        return "Season{" + "name='" + name + '}';
    }
复制代码

  此处注意两个地方:

  

 

 

 

   此处是再类内部直接生成实例对象。

 

 

第二种写法

 

复制代码
enum Season {
    private String name;
 
    SPRING("春天")
 
    //将构造器私有化,为了防止直接 new
    private Season(String name) {
        this.name = name;
    }
 
    //去掉 setXxx 方法, 防止属性被修改,只保留getXxx方法,用于读取
    public String getName() {
        return name;
    }
 
    //重写toString()方法,用于输出
    @Override
    public String toString() {
        return "Season{" + "name='" + name + '}';
    }
复制代码

  注意两个地方:

  

 

总结:

  在关键字class作用下的

public static final Season SPRING = new Season("春天");

  等价于在关键字enum作用下的
SPRING("春天")



注:
  如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略。
  当有多个枚举对象时,使用 “,” 间隔,最后有一个分号结尾。
  枚举对象必须放在枚举类的行首。
posted @   先娶国王后取经  阅读(1905)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示