枚举

枚举的本质是什么

枚举的本质就是一个类,这个类和普通类不同的地方在于有一个枚举项
这些枚举项每一个都是一个枚举类的实例对象,这些实例都是常量,默认被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里面 == 和 === 的结果也都是一样的

你可能感兴趣的:(枚举)