小编Yea*_*ter的帖子

单例的Java功能接口为枚举

在查看Comparators类的源代码时,我遇到了这些代码行.

class Comparators {

    //...

    enum NaturalOrderComparator implements Comparator<Comparable<Object>> {
        INSTANCE;

        @Override
        public int compare(Comparable<Object> c1, Comparable<Object> c2) {
            return c1.compareTo(c2);
        }

        @Override
        public Comparator<Comparable<Object>> reversed() {
            return Comparator.reverseOrder();
        }
    }

    //...

}
Run Code Online (Sandbox Code Playgroud)

我想我明白这是做什么的.它是一个实现Comparator接口的Singleton实例.它使用实现Comparable接口的类的"compareTo"进行自然排序(如果我错了,请纠正我).

然而,我不明白为什么使用枚举完成它.我真的很喜欢Singletons的枚举,不要误会我的意思但在这种情况下我个人认为这会更简单:

public static final Comparator<Comparable<Object>> NATURAL_ORDER_COMPARATOR =
    new Comparator<Comparable<Object>>() {
        @Override
        public int compare(Comparable<Object> c1, Comparable<Object> c2) {
            return c1.compareTo(c2);
        }

        //...

    }
Run Code Online (Sandbox Code Playgroud)

除了个人偏好之外,还有任何理由使用枚举来实现吗?

java singleton enums design-patterns

13
推荐指数
2
解决办法
703
查看次数

标签 统计

design-patterns ×1

enums ×1

java ×1

singleton ×1