java: 无法将枚举 中的构造器 adminmodule应用到给定类型_简单的Java枚举,并不简单!...

本文详细介绍了Java枚举的原理、特性、使用方法和接口实现,阐述了枚举如何提高类型安全性和代码可读性。枚举可以实现方法添加、接口,且提供了EnumSet和EnumMap等集合类型,适用于需要一组固定常量表示的场景。
摘要由CSDN通过智能技术生成

当进行编程开发时,需要一组固定的常量来表示需要的类型,如使用一组 int 常量表示一周的日期:

public class Week {
    
public static final int MONDAY = 1;
public static final int TUESDAY = 2;
public static final int WEDNESDAY = 3;
public static final int THURSDAY = 4;
public static final int FIRDAY = 5;
public static final int SATURDAY = 6;
public static final int SUNDAY = 7;
}

这种方法称作 int 枚举模式。接下来设计一个使用日期的方法:

public static boolean alarm(LocalTime time, int[] weeks) {
    
......
}

上述设置闹铃的方法中,第二个参数是传入日期数组,在 weeks 数组中的每个 int 值都必须在 1~7 之间,但因为传入的 int 值可以是任何值,不具有类型安全性,也几乎没有描述性可言,且编译时也不会提出任何警告;而且需要遍历 Week 类中所有表示星期的值的方式也没有。当然,这种设置常量的类型也不仅局限在 int 类型中,也可以使用 String 设置常量,被称为 String 枚举模式。但是,这种使用 intString 或其它类型设置的枚举模式不是太可靠。

枚举

在这种情况下,Java 在 1.5 版本中引入枚举类型来解决 intString 枚举模式所带有的缺点。使用 enum 定义的枚举类,是 Object 的子类,继承自 java.lang.Enum> 抽象类,不能继承其它类。

public abstract class Enum<E extends Enum<E>>implements Comparable<E>, Serializable {
    
......
}

接下来,将上面的 Week 类重新编写:

public enum  Week {
    
MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FIRDAY,SATURDAY,SUNDAY;
}

在以参数方式传入方法:

public static boolean alarm(LocalTime time, Week[] weeks) {
    
......
}

重写编写后,Week[] 作为第二个参数,传入的每个 Week 值都是 Week 枚举类中的有效值之一,保证了编译时的类型安全。

原理

但其实,在 Week 枚举类中设置的枚举值,如MONDAYTUESDAY ... SUNDAY 其实本质上是 int 值。


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值