为了账号安全,请及时绑定邮箱和手机立即绑定

设计决策 - Math.java 中单独的 RandomNumberGeneratorHolder

设计决策 - Math.java 中单独的 RandomNumberGeneratorHolder

慕慕森 2021-07-20 17:41:18
所以我正在浏览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(); }}IMO,我们可以简单地在类本身内部声明randomNumberGeneratoras 。private static finalMath我的问题是,为此创建一个单独的持有者类有什么好处吗?或者这只是个人喜好。
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

它们都是lazy,但一个是lazier(单例模式)。拥有一个private static字段意味着当持有该字段的类被初始化时,该字段也被初始化。因此,如果您需要在该类上调用一个方法,但您不需要那个 singleton,它仍然会被初始化。

另一方面,嵌套类会阻止这种情况,并且会在实际使用时进行初始化。

确切地说,这很少是重要的情况,jdk 本身很可能是极少数的例子之一。


查看完整回答
反对 回复 2021-07-29
  • 3 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信