2024年java枚举基础

java枚举基础枚举类型 枚举类型是 Java5 新增的特性之一 枚举是一种特殊类型的类 其枚举的每一个值都是该枚举类 的一个实例 枚举类型是作为 Java 语言的一部分 是完全类型安全的 编译器会帮助我们检查枚 举类型的正确性 枚举声明 在枚举类型出现之前 当需要定义一些常量时 我们经常使用接口的静态常量来实现 这种方式 没有错误 但没有枚举类型安全 将接口中的不同静态常量初始化为相同值时 编译并不会发出 警告

大家好,我是讯享网,很高兴认识大家。



枚举类型

枚举类型是Java5新增的特性之一,枚举是一种特殊类型的类,其枚举的每一个值都是该枚举类

的一个实例。枚举类型是作为Java语言的一部分,是完全类型安全的,编译器会帮助我们检查枚

举类型的正确性。

枚举声明

在枚举类型出现之前,当需要定义一些常量时,我们经常使用接口的静态常量来实现。这种方式

没有错误,但没有枚举类型安全,将接口中的不同静态常量初始化为相同值时,编译并不会发出

警告,所以我们更提倡使用枚举类型。

讯享网

枚举声明是由关键字enum、该枚举类型的标识符及枚举常量构成的,这些常量是枚举类的静态字

段,每个常量实际上是该枚举类的一个实例,常量之间用逗号隔开。

枚举类中除了枚举常量也可以声明其他成员,但在声明其他成员之前,必须先声明所有的枚举常量

,而且最后一个常量以分号结尾。

 

枚举常量都是在类内声明的,为防止在外部声明,构造函数需要用private修饰,可省略不写,

而且在构造器中不能使用该枚举类的非静态常量字段。

声明枚举常量时,不可以用new来构建实例,而是像上面代码那样,直接用枚举常量来声明,

有参数时将参数写在一对括号之间。

枚举原理

在使用enum创建枚举类型并编译后,编译器会将枚举类编译成独立的类文件,如图:

java 动态改变枚举_枚举类

为了深入地理解枚举类的构建原理,我用Java Decompiler将枚举类进行了反编译。

讯享网

从反编译后的代码中,我们可以看出以下几点:

1)枚举类继承了Enum类。

  枚举类隐式地继承了java.lang.Enum,Java类只支持单继承,所以枚举类不能继承其他类,

  但可以实现接口。

2)枚举类是final的,我们不能再继承枚举类。

3)枚举常量通过静态块来进行初始化,序数是从0开始的。

4)编译器为我们自动增加了values()和valueof(String name)方法。

  public static E[ ] values():返回包含了所有枚举常量的数组。

  public static E java枚举基础 valueof(String name): 返回指定名字的枚举常量。

结束

枚举类作为Java语言的一部分,是类型安全的,并且在switch语句中也可以使用枚举类型,这为

我们提供了很多方便。当我们需要声明一个有关实例的人所共知的闭集时,枚举类型是一个不错

的选择。作为编程新手的我,在每次分享中,总会出现许多错误,期待并感谢大牛们的指正。

小讯
上一篇 2024-12-24 21:55
下一篇 2024-12-27 17:47

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/9450.html