Java枚举类型enum深入理解(2)

我们看一下compareTo方法

public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable { //元素在枚举中的序号 private final int ordinal; //可以看到compareTo方法返回的就是两个元素ordinal的差值 public final int compareTo(E o) { Enum<?> other = (Enum<?>)o; Enum<E> self = this; if (self.getClass() != other.getClass() && self.getDeclaringClass() != other.getDeclaringClass()) throw new ClassCastException(); return self.ordinal - other.ordinal; } } 5. 枚举也可也实现接口 public interface WeatherInterface { //获取温度 public String getTemperature(Quarter quarter); } public enum Quarter implements WeatherInterface{ SPRING("春"), SUMMER("夏"), AUTUMN("秋"), WINTER("冬"); private Quarter(String name){ this.name = name; } private String name; public String getName() { return name; } //重写获取温度方法 @Override public String getTemperature(Quarter quarter) { switch (quarter) { case SPRING: return "适中"; case SUMMER: return "热"; case AUTUMN: return "凉爽"; case WINTER: return "寒冷"; default: return "无法确定"; } } }

但注意枚举不可继承其他类

public class Pquarter {} //无法编译通过 public enum Quarter extends Pquarter {} 6. 使用接口来组织枚举

如果枚举太多也不好管理,同时条理不够清晰,我们可以通过接口来将多个相关枚举组织在一起进行管理,

public interface Weather { enum Quarter implements Weather { SPRING, SUMMER, AUTUMN, WINTER; } enum Temperature implements Weather { MODERATE, HEAT, COOL, COLD } //调用时直接通过Weather.Quarter.SPRING即可。 } 四. 总结

本文主要介绍了枚举enum主要特点,定义,无参构造器,有参构造器,枚举的常用方法举例以及主要的应用场景,若有不对之处,请批评指正,望共同进步,谢谢!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4217b506fe40914cd365a2cc643fdcbb.html