Java枚举概述

枚举介绍

JDK1.5之前,Java可以有两种方式定义新类型:类和接口。

JDK1.5之前需要自定义枚举类。

JDK 1.5 新增的 enum 关键字用于定义枚举类。全称为 enumeration,存放在 java.lang 包中。

若枚举只有一个成员,则可以作为一种单例模式的实现方式。

必须在枚举类的第一行声明枚举类对象。

JDK 1.5 中可以在 switch 表达式中使用Enum定义的枚举类的对象作为表达式,case 子句可以直接使用枚举值的名字,无需添加枚举类作为限定。

enum作为Sun全新引进的一个关键字,看起来很象是特殊的class,    它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。

 

枚举类和普通类的区别:

使用 enum 定义的枚举类默认继承了 java.lang.Enum 类,而不是继承了Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。

扫描二维码关注公众号,回复: 2596684 查看本文章

枚举类的构造器只能使用private访问控制符,如果省略了其构造器的访问控制符,则默认使用private修饰。

枚举类的所有实例必须在枚举类中显式列出(, 分隔  ; 结尾),否则这个枚举类将永远都不能产生实例。列出的实例系统会自动添加 public static final 修饰,无需显式添加。

枚举的好处以及与常量类的区别:

1)枚举型可以直接与数据库打交道,比如通常使用的varchar类型,对应的是枚举的常量名。

2)switch语句支持枚举型,当switch使用int、String类型时,由于值的不稳定性往往会有越界的现象,对于这个的处理往往只能通过if条件筛选以及default模块来处理。而使用枚举型后,在编译期间限定类型,不允许发生越界的情况

3)当你使用常量类时,往往得通过equals去判断两者是否相等,使用枚举的话由于常量值地址唯一,可以用==直接对比,性能会有提高。

4)常量类编译时,是直接把常量的值编译到类的二进制代码里,常量的值在升级中变化后,需要重新编译引用常量的类,因为里面存的是旧值。枚举类编译时,没有把常量值编译到代码里,即使常量的值发生变化,也不会影响引用常量的类。

5)枚举类编译后默认为final class,不允许继承可防止被子类修改。常量类可被继承修改、增加字段等,容易导致父类的不兼容。

 

猜你喜欢

转载自blog.csdn.net/lxxiang1/article/details/81293470
今日推荐