在RXJava [1]中,枚举[2]定义为
public enum JavaFxObservable {
; // no instances
public static void staticMethod() {
// ...
}
}
这项技术使用没有实例的枚举的目的是什么?为什么不使用标准类?
答案 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();
}
}
}
评论是我的。 ;)