Java基础学习——枚举类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/biandi9300/article/details/89639567

Java基础学习——枚举类


前几天在面试中被问到了枚举类,现在就把枚举类的相关知识点总结在下面。

  1. 枚举可以用enum关键字来定义,枚举类型的取值默认是public static final。划重点了,虽然没有直接用final来修饰,但枚举类默认是final的,也就是说,枚举类不能被继承!
  2. 枚举类的构造方法默认是private。
  3. 用enum定义的枚举类是默认继承java.lang.Enum类的,而Enum实现了Comparable和Serializable两个接口,这证明了枚举类可以使用比较器或进行序列化操作。
  4. 枚举类的主要操作方法如下:
序号 方法 类型 描述
1 protected Enum(String name,int ordinal) 构造 接收枚举的名称和枚举的常量创建枚举对象
2 protected final Object clone() throws CloneNotSupportedException 普通 克隆枚举对象
3 public final int compareTo(E o) 普通 对象比较
4 public final boolean equals(Object other) 普通 对象比较
5 public final int hashCode() 普通 返回枚举常量的哈希码
6 public final String name() 普通 返回此枚举的名称
7 public final ordinal() 普通 返回枚举常量的序数
8 public static <T extends Enum<T>> T valueOf(class<T> enumType,String name) 普通 返回带指定名称的指定枚举类型的枚举常量
  1. 在JDK1.5之后,java.util包里提供了两个新的集合操作类:EnumMap和EnumSet,EnumMap类提供了java.util.Map接口的一个特殊实现,该类中的键(key)是一个枚举类型;EnumSet类提供了java.util.Set接口的一个特殊实现。
    EnumSet是Set接口的一个特殊实现,所以里面的内容是无法重复的。使用EnumSet时是不能直接使用关键字new为其进行实例化,而是应该使用本类中提供的静态方法,如下(类型全是普通,complementOf方法描述起来有点抽象,看看例程就能理解)
序号 方法 描述
1 allOf 将枚举中的全部内容设置到EnumSet中
2 of 创建一个包含枚举指定内容的EnumSet对象
3 copyOf 创建一个从指定Collection中指定的EnumSet’对象
4 complementOf 创建一个其元素类型与指定枚举set相同的枚举set,最初包含指定集合中所不包含的此类型的所有元素
5 nuneOf 创建一个可以接收指定类型的空集合

猜你喜欢

转载自blog.csdn.net/biandi9300/article/details/89639567