Java之枚举

怼烎@ 2024-04-17 21:38 199阅读 0赞

Fine, 我写这个是因为在读Calendar的时候发现对枚举类(enum)的使用不熟悉。

使用原因

  • 清晰明了。例如枚举类SeasonEnum表示的季节,它的实例变量就都代表季节。与直接定义常量相比更容易区分。
  • 打印输出意义明确。若打印SEASON_SPRING就只打印一个数字。若使用枚举可根据枚举实例名打印出属性

创建第一个枚举类

  1. public enum SeasonEnum {
  2. //默认自动添加public static final
  3. SPRING,
  4. SUMMER,
  5. FALL,
  6. WINTER;
  7. }

注意两点:

  1. 使用关键字enum
  2. 枚举值之间用逗号隔开, 最后一个值以分号结束。

枚举类里面的值代表着它的每一个实例。

有属性的枚举类

  1. //默认自动添加public static final
  2. SPRING("春"),
  3. SUMMER("夏"),
  4. FALL("秋"),
  5. WINTER("冬");
  6. private final String name;
  7. private SeasonEnum(String name){
  8. this.name = name;
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. // 打印Spring实例代表的值
  14. System.out.println(SeasonEnum.SPRING.getName());
  15. 输出:春

枚举类的values方法可以返回所有枚举实例

  1. for(SeasonEnum enumItem : values()){
  2. System.out.println(enumItem);
  3. }
  4. 输出:
  5. SPRING
  6. SUMMER
  7. FALL
  8. WINTER

抽象枚举类

枚举类是一种特殊的类…那也是类啊,所以也可以实现接口。抽象枚举类就是包含了抽象方法的枚举类,所以系统会默认使用abstrat方法修饰。Of course, 非抽象枚举类默认使用fianl进行修饰的。

  1. // 定义一个接口
  2. public interface Info {
  3. void info();
  4. }

枚举类实现该接口

  1. SPRING("春"),
  2. SUMMER("夏"),
  3. FALL("秋"),
  4. WINTER("冬");
  5. private final String name;
  6. private EnumSub(String name){
  7. this.name = name;
  8. }
  9. public String getName() {
  10. return name;
  11. }
  12. public void info(){ // 实现该方法
  13. System.out.println("hello?");
  14. }
  15. public static void main(String[] args) {
  16. EnumSub.SPRING.info();
  17. }
  18. // 输出hello?

这样有一个缺点就是所有实例的info方法的输出结果是一样的。So, 如果要不同的实例表现出不同的行为,可以使用匿名内部类

  1. //其余部分与上一部分代码大致类似
  2. SPRING("春"){
  3. public void info(){
  4. System.out.println("春天");
  5. }
  6. },
  7. SUMMER("夏"){
  8. public void info(){
  9. System.out.println("夏天");
  10. }
  11. },
  12. FALL("秋"){
  13. public void info(){
  14. System.out.println("秋天");
  15. }
  16. },
  17. WINTER("冬"){
  18. public void info() {
  19. System.out.println("冬天");
  20. }
  21. };
  22. // test
  23. EnumSub.SPRING.info();
  24. EnumSub.WINTER.info();
  25. 输出:
  26. 春天
  27. 冬天

发表评论

表情:
评论列表 (有 0 条评论,199人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java

    ine, 我写这个是因为在读Calendar的时候发现对枚举类(enum)的使用不熟悉。 使用原因 * 清晰明了。例如枚举类SeasonEnum表示的季节,它...

    相关 Java进阶

    枚举进阶 上一节我们讲了[枚举初识][Link 1] 里面主要讲了枚举的实现原理,我们从编译器的角度看了枚举的底层实现以及枚举常用的方法 今天我们看一下枚举添加自定义方

    相关 Java

    1.定义 enum 是一种数据类型,与 全局常量比较相似,都是全局的并且是可以通过类名调用的 与全局常量区别 枚举功能更强大,可以有属性和方法

    相关 java

    枚举 枚举(enum),是指一个经过排序的、被打包成一个单一实体的项列表。一个枚举的实例可以使用枚举项列表中任意单一项的值。枚举在各个语言当中都有着广泛的应用,通常用来表

    相关 Java核心

    Java核心(一)枚举 Java 1.5 发行版本增加了新的引用类型: 枚举, 在其之前,我们使用枚举类型值的时候通常是借助常量组成合法值的类型,例如表示光的三原色:红黄

    相关 Java

    一、 如何自定义枚举类? 二、 如何使用enum 创建枚举类以及枚举类的主要方法? 三、 如何实现接口的枚举类? 我通过下面的实例代码中解释这些问题吧,讲解请

    相关 Java与注解

    枚举与注解 枚举 1、枚举 枚举类型的对象是有限、固定的几个常量对象。 2、语法格式 //形式一:枚举类型中只有常量对象列表 【修饰符】 enum 枚举类