枚举的本质是什么
枚举的本质就是一个类,这个类和普通类不同的地方在于有一个枚举项
这些枚举项每一个都是一个枚举类的实例对象,这些实例都是常量,默认被final、public、static修饰
每个枚举类型继承java.lang.Enum,所以枚举类不能再继承其他类型
public enum TypeEnum {
枚举项1,枚举项2
成员变量1
成员变量2
方法1(){}
方法2(){}
}
枚举如何使用
public enum TypeEnum {
INSTANCE1("name" , "code"),
INSTANCE2("name" , "code");
private String typeName;
private String typeCode;
// 必须是私有
private TypeEnum(String typeName , String typeCode){
this.typeName = typeName;
this.typeCode = typeCode;
}
public String getTypeName() {
return typeName == null ? "" : typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public String getTypeCode() {
return typeCode == null ? "" : typeCode;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
}
// 使用
TypeEnum.INSTANCE1.getTypeCode();
TypeEnum.INSTANCE1.getTypeName();
枚举类和接口
枚举类可以实现接口,使用的时候可以向上转型为接口
public enum TypeEnum implements Compare{
INSTANCE1(),
INSTANCE2();
@Override
public void compare() {}
}
// 使用
TypeEnum02 typeEnum = TypeEnum02.INSTANCE1;
Compare compare = TypeEnum02.INSTANCE1;
枚举的对比
因为枚举是单例的,所以同一个枚举的同一个实例是hashCode是一样的
在Java里面 == 结果是一样的
在Kotlin里面 == 和 === 的结果也都是一样的