今天不想跑,所以才去跑|

凉白茶

园龄:2年4个月粉丝:19关注:7

2022-12-20 11:00阅读: 76评论: 0推荐: 0

枚举类

枚举类

枚举类有两种实现方式

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

一、自定义实现枚举

  1. 不需要提供setXXX方法,因为枚举对象值通常为只读。
  2. 对枚举对象/属性使用 final + static 共同修饰,实现底层优化。
  3. 枚举对象名通常使用全部大写,常量的命名规范。
  4. 枚举对象根据需要,也可以有多个属性。
//演示定义枚举类实现
class Season{//类
private String name;
private String desc;//描述
public final static Season SPRING = new Season("春天","温暖");
public final static Season SUMMER = new Season("夏天","炎热");
public final static Season AUTUMN = new Season("秋天","凉爽");
public final static Season WINTER = 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. 对外暴露对象(通过为对象添加 public final static 修饰符)。
  4. 可以提供 get方法,但是不要提供 set方法。

二、 enum 关键字实现枚举

① 使用enum 来实现枚举

enum Season2{//类
// public final static Season SPRING = new Season("春天","温暖");
// public final static Season SUMMER = new Season("夏天","炎热");
// public final static Season AUTUMN = new Season("秋天","凉爽");
// public final static Season WINTER = new Season("冬天","寒冷");
//如果使用了 enum 来实现枚举类,上面的代码可以简化
//1. 使用关键字 enum 替代 class
//2. public final static Season SPRING = new Season("春天","温暖"); 直接改成
// SPRING("春天","温暖") 即可,解读 常量名(实参列表)
//3. 如果有多个常量(对象),使用 “,“号间隔即可
//4. 如果使用 enum 来实现枚举,要求定义常量对象,写在最前面
SPRING("春天","温暖"),
SUMMER("夏天","炎热"),
AUTUMN("秋天","凉爽"),
WINTER("冬天","寒冷");
private String name;
private String desc;//描述
private Season2(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 + '\'' +
'}';
}
}

② enum关键字实现枚举注意事项

  1. 当我们使用 enum 关键字开发一个枚举类时,默认会继承Enum类,而且是一个final类。

    enum类反编译

  2. 传统的 public static final Season2 SPRING = new Season2("春天","温暖"); 简化成 SPRING("春天","温暖"); 这里必须知道,它调用的是哪个构造器。

  3. 如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略。

  4. 当有多个枚举对象十四,使用 “,” 号间隔,最后以 “;”号结尾。

  5. 枚举对象必须放在枚举类的行首。

③ Enum类常用成员方法

  1. toString():Enum类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息。
  2. name():返回当前对象名(常量名),子类中不能重写。
  3. ordinal():返回当前对象的位置号(编号),默认从0开始。
  4. values():返回当前枚举类中所有常量,返回 枚举类名[],一个数组含有定义的所有枚举对象。Java编译器会自动在enum类型中插入values方法,Enum类里面没有,通过反编译可以看到。
  5. valueOf():将字符串转换为枚举对象,要求字符串必须是已有的常量名,否则报异常。
  6. compareTo():比较两个枚举常量,比较的是枚举编号,返回的是编号差值。

Enum类常用成员方法

④ enum使用细节

  1. 使用enum关键字后,就不能再继承其他类了,因为enum会隐式继承Enum类,而Java是单继承机制。

  2. 枚举类和普通类一样,可以实现接口,如下形式:

    enum 类名 implements 接口1,接口2{}

本文作者:凉白茶

本文链接:https://www.cnblogs.com/zh-Note/p/16989321.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   凉白茶  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程使用 AI 从 0 到 1 写了个小工具
· 快收藏!一个技巧从此不再搞混缓存穿透和缓存击穿
· AI 插件第二弹,更强更好用
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.