所以我正在浏览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 本身很可能是极少数的例子之一。
添加回答
举报
0/150
提交
取消