Har*_*dha 3 java design-decisions java-8
所以我浏览了Math.java源代码,发现创建了一个持有者类来保存randomNumberGenerator静态变量.这是相关的一段代码.
public final class Math {
// other methods.
public static double random() {
return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}
private static final class RandomNumberGeneratorHolder {
static final Random randomNumberGenerator = new Random();
}
}
Run Code Online (Sandbox Code Playgroud)
国际海事组织,我们可以简单地宣布randomNumberGenerator为private static final内部Math类本身.
我的问题是,为此创建一个单独的持有者类是否有任何好处?或者这只是个人偏好.
这是按需初始化持有者模式的示例.当MathJVM加载类时,Random不会立即构造实例.相反,只有在random()调用方法时才会发生,此时RandomNumberGenreatorHolder将加载类,并Random构造单例对象.
本质上,代码确保Random单例是懒惰创建的.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |