在RXJava [1]中,有一个枚举[2]定义为
public enum JavaFxObservable {
; // no instances
public static void staticMethod() {
// ...
}
}
此技术使用没有实例的枚举的目的是什么?为什么不使用标准类?
最佳答案
您以最简单的方式定义这是一个没有实例的类,即它是实用程序类。
enum
是一个类。对于私有(private)构造函数,它也是最终的。你可以写
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();
}
}
}
评论是我的。 ;)