所以我正在瀏覽Math.java源代碼,我發(fā)現(xiàn)創(chuàng)建了一個持有者類來保存randomNumberGenerator靜態(tài)變量。這是相關的代碼段。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,我們可以簡單地在類本身內(nèi)部聲明randomNumberGeneratoras 。private static finalMath我的問題是,為此創(chuàng)建一個單獨的持有者類有什么好處嗎?或者這只是個人喜好。
3 回答

繁星點點滴滴
TA貢獻1803條經(jīng)驗 獲得超3個贊
它們都是lazy
,但一個是lazier
(單例模式)。擁有一個private static
字段意味著當持有該字段的類被初始化時,該字段也被初始化。因此,如果您需要在該類上調(diào)用一個方法,但您不需要那個 singleton,它仍然會被初始化。
另一方面,嵌套類會阻止這種情況,并且會在實際使用時進行初始化。
確切地說,這很少是重要的情況,jdk 本身很可能是極少數(shù)的例子之一。
添加回答
舉報
0/150
提交
取消