【JAVA】浅谈java枚举类,
分享于 点击 49763 次 点评:214
【JAVA】浅谈java枚举类,
一、什么情况下使用枚举类?
有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便?
二、为什么不用静态常量来替代枚举类呢?
public static final int SEASON_SPRING = 1; public static final int SEASON_SUMMER = 2; public static final int SEASON_FALL = 3; public static final int SEASON_WINTER = 4;
枚举类更加直观,类型安全。使用常量会有以下几个缺陷:
1. 类型不安全。若一个方法中要求传入季节这个参数,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就行,但是如果是枚举类型的话,就只能传入枚举类中包含的对象。
2. 没有命名空间。开发者要在命名的时候以SEASON_开头,这样另外一个开发者再看这段代码的时候,才知道这四个常量分别代表季节。
三、枚举类入门
先看一个简单的枚举类。
package enumcase; public enum SeasonEnum { SPRING,SUMMER,FALL,WINTER; }
四、枚举类介绍
枚举类内也可以定义属性和方法,可是是静态的和非静态的。
package enumcase; public enum SeasonEnum { SPRING("春天"),SUMMER("夏天"),FALL("秋天"),WINTER("冬天"); private final String name; private SeasonEnum(String name) { this.name = name; } public String getName() { return name; } }
实际上在第一行写枚举类实例的时候,默认是调用了构造器的,所以此处需要传入参数,因为没有显式申明无参构造器,只能调用有参数的构造器。
构造器需定义成私有的,这样就不能在别处申明此类的对象了。枚举类通常应该设计成不可变类,它的Field不应该被改变,这样会更安全,而且代码更加简洁。所以我们将Field用private final修饰。
五、枚举类实现接口
枚举类可以实现一个或多个接口。与普通类一样,实现接口的时候需要实现接口中定义的所有方法,若没有完全实现,那这个枚举类就是抽象的,只是不需显式加上abstract修饰,系统化会默认加上。
如果你对编程感兴趣或者想往编程方向发展,可以关注
相关文章
- 暂无相关文章
用户点评