通知 网站从因情语写改为晴雨,这个网站的模板也从calmlog_ex改为 whimurmur

Enum学习中的compareTo方法分析

922人浏览 / 0人评论 / | 作者:因情语写  | 分类: JAVA基础  | 标签: JAVA

作者:因情语写

链接:https://www.qingyu.blue/article/49

声明:请尊重原作者的劳动,如需转载请注明出处


     今天看工厂模式的时候里面用了枚举定义各种可能的实例类型,就看了一下枚举,发现里面有一个compareTo(E o)方法

    通过Object的getClass()方法比较两个两个比校对象类型是否一致,如果不一致,再调用Enum中的getDeclaringClass()方法,方法中如果超类不是Enum,就会返回超类

    通过注释,发现同一个枚举类的两个枚举常量如果类结构不同那么他们getClass()的结果也会不同,就获取他们的超类,如果超类不是Enum,就看超类是否相同,相同的话就认为两个枚举类型相同,可以进行比较。

    我测试的代码如下:

     上面是一个接口,测试代码也在里面,有两个枚举类实现了它(这里用到一个)。CarInfo.HatchbackCarType和CarInfo.JeepCarType因为各自复写了CarInfo枚举类的一个新增方法buyer,导致了枚举常量的类不再相同,成为了CarInfo的内部类,但它们的超类都是CarInfo,是相同的,故getDeclaringClass()的结果是一样的,所以有控制台的输出,可以比较出大小,大小比较是用self.ordinal - other.ordinal,即比较序数,可以看出先后关系与前后的距离。


自己写的文章声明标题示例:


点赞(0) 打赏

全部评论

还没有评论!