作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 RXJava [1] 中有一个枚举 [2] 定义为
public enum JavaFxObservable {
; // no instances
public static void staticMethod() {
// ...
}
}
这种使用没有实例的枚举的技术的目的是什么?为什么不使用标准类?
最佳答案
What's the purpose this technique using a enum with no instances?
您以最简单的方式定义这是一个没有实例的类,即它是实用程序类。
Why not use a standard class?
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();
}
}
}
评论是我的。 ;)
关于没有实例的 Java 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26118972/
我是一名优秀的程序员,十分优秀!