7

在 RXJava [1] 中有一个枚举 [2] 定义为

public enum JavaFxObservable {
    ; // no instances


    public static void staticMethod() {
        // ...
    }
}

这种技术使用没有实例的枚举的目的是什么?为什么不使用标准类?


4

1 回答 1

6

这种技术使用没有实例的枚举的目的是什么?

您以最简单的方式定义这是一个没有实例的类,即它是实用程序类。

为什么不使用标准类?

Anenum是一个类。它也是具有私有构造函数的最终结果。你可以写

public final class JavaFxObservable {
    private JavaFxObservable() {
        throw new Error("Cannot create an instance of JavaFxObservable");
    }
}

但这更冗长且容易出错。例如,我在真实代码中看到了这一点

public final class Util {
    private Util() {
    }

    static void someMethod() { }

    static class DoesSomething {
         void method() {
             // WAT!? we can still create this utility class
             // when we wrote more code, but it's not as good.
             new Util().someMethod(); 
         }
    }
}

评论是我的。;)

于 2014-09-30T10:57:33.850 回答