码迷,mamicode.com
首页 > 编程语言 > 详细

java枚举类 (近期读书笔记整理,复习所用,存个档

时间:2018-04-09 19:00:48      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:serial   继承   span   strong   关键字   分享   enum   san   方法   

某些情况下,一个类的对象是有限而固定的。

如地球上的季节,有春夏秋冬四季,即四个对象

这种实例有限且固定的类,被称为枚举类

早期,通过定义类的方式,直接使用简单的静态变量来表示枚举。

如public static final int Season_spring=1;      注:左边的内容改下名字和X4

但这种方式存在诸多不便和缺陷。(如类型安全和容易混淆,后来,它进化了……

变身:

java5中新增了一个关键字,enum(与class,interface的地位相同)

它是一个特殊的类,可以拥有自己的成员变量,方法,可以实现一个或多个接口,也可以定义自己的构造器。

对比一下:

public enum Season{

Spring,Summer,Fall,Winter;

}

是不是很简洁呢?

但它不是普通类,它和普通类存在区别:

1枚举类可以实现一个和多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类,因此枚举类不能显式继承其他父类,其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。

2使用Enum定义、非抽象的枚举类会默认使用final修饰,因此枚举类不能派生子类。

3枚举类的构造器只能使用private访问控制符

4枚举类所有实例必须在显式在第一行列出,否则永远不能产生实例。

 

举类默认 提供了一个values()方法,该方法可以很方便的遍历出所有枚举值。

 

java.lang.Enum类中所提供的方法

技术分享图片

 

 

public enum Gender

{

MALE,FEMALE;

//定义一个public修饰的实例变量

public String name;

}

 

public class GenderTest

{

main方法(此处)

//通过Enum的valueof()方法来获取enum类的枚举值

Gender g=Enum.valueof(Gender.class,"FEMALE");

g.name="女";

//直接访问枚举值的name实例变量

system.out.println("g"+"代表:"+g.name);

}

}

可以进行一些改进,把String name设成私有属性,然后添加一个方法,在里面利用Switch控制实现一个公有的setName方法,避免造成混淆。

暂时就到这里了,每天进步一点点。学习up

java枚举类 (近期读书笔记整理,复习所用,存个档

标签:serial   继承   span   strong   关键字   分享   enum   san   方法   

原文地址:https://www.cnblogs.com/jump123/p/8761297.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!