没有实例的Java枚举

时间:2014-09-30 10:52:28

标签: java enums rx-java rx-javafx

在RXJava [1]中,枚举[2]定义为

public enum JavaFxObservable {
    ; // no instances


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

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


1 个答案:

答案 0 :(得分:6)

  

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

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

  

为什么不使用标准类?

enum是一个类。它也是私有构造函数的最终版本。你可以写

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(); 
         }
    }
}

评论是我的。 ;)