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

Posted jump123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java枚举类 (近期读书笔记整理,复习所用,存个档相关的知识,希望对你有一定的参考价值。

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

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

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

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

如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枚举类 (近期读书笔记整理,复习所用,存个档的主要内容,如果未能解决你的问题,请参考以下文章

《疯狂Java讲义》(十六)---- 枚举类

java-枚举类

Java 枚举

Java 枚举类型必须定义在静态类中

Java枚举类

java中的枚举类