在线独自等待 在线。找个S女。一起SP自W 的。...

枚举也是类在定义枚举的时候,其实是定义了一个枚举集合然后在这个集合中包含一些列枚举值。比如性别可以是一个枚举集合可能中包含男性、女性等枚举值。

鉯性别这个枚举集合为例先来定义两个枚举值,分别为MALE和FEMALE:

JAVA编译器会把这MALE和FEMALE转成两个枚举值

枚举类有两个固定的属性,即name和ordinal这两个屬性都是只读的,其中name的值就是枚举值的名字而且大小写完全一致,比如MALE.name()返回永远都是"MALE"

属性ordinal是整数,表示枚举值在枚举集合中的序数其实就是枚举值的出现顺序,这个属性值也是只读的而且由ordinal()获取。

但是如果我们在自定义的枚举类中声明与name或ordinal同名的属性,并不影響name()和ordinal()方法的返回值

自定义枚举类的构造函数

正如前面讲述的,Enum有默认的构造函数并且接受两个参数。其实Java中的Enum也是类所以,我们可鉯像类一样修改枚举类的构造函数甚至添加新的方法和属性。

获取枚举集合的所有枚举值

运行时枚举类会多几个方法,比如Enum.values()这个方法会放回该枚举内所有的枚举常量,顺序按ordinal的顺序排列但如果在写代码的时候你不知道它将来是何种枚举类,也可以使用type.getEnumConstants()获取运行时枚舉类的所有枚举值(下面的反射中就会用到)

枚举也是类,所以它也可以实现接口这种实现方式在做反射时,特别有用比如POJO的属性昰自定义枚举类,当我们不能根据name()来判断字符串对应的是哪个枚举值时就可以通过一个公共的方法来判断给出的字符值对应的是哪个枚舉值。

在做反射的时候我们就可以用value()方法来判断字符值对应的枚举值:

自定义枚举类型的判断方式:

一般枚举类型根据name()来判断枚举值

我要回帖

更多关于 独自等待 在线 的文章

 

随机推荐