3 回答

TA貢獻2051條經(jīng)驗 獲得超10個贊
這里的典型模式是一個只有private
或package default
構(gòu)造函數(shù)的類,結(jié)合一個工廠方法,該工廠方法要么是該類的公共靜態(tài)方法,要么是伴隨工廠類的方法。您可以LocalDate
從javadoc 中列出的許多靜態(tài)方法中獲取對象。

TA貢獻1790條經(jīng)驗 獲得超9個贊
使用
LocalDate d = LocalDate.now();
現(xiàn)在創(chuàng)建一個 LocalDate。有更多靜態(tài)方法可以實例化 LocalDate。API 的設(shè)計者決定創(chuàng)建靜態(tài)方法來實例化 LocalDates,因為它們可以在實際實例化的內(nèi)容上有更清晰的名稱(例如上面的“now()”為當前日期創(chuàng)建 LocalDate)。

TA貢獻1795條經(jīng)驗 獲得超7個贊
為什么 LocalDate 沒有默認構(gòu)造函數(shù)?
因為它沒有“默認值”來構(gòu)造這是有道理的。在這種情況下,年、月和日字段的值是什么?
默認構(gòu)造函數(shù)與具有零參數(shù)的顯式構(gòu)造函數(shù)不同。默認構(gòu)造函數(shù)是由編譯器添加的,但前提是您沒有定義其他構(gòu)造函數(shù)(語言規(guī)范)。LocalDate
有一個顯式構(gòu)造函數(shù),因此它沒有默認構(gòu)造函數(shù)。該構(gòu)造函數(shù)也是私有的,因此您不能直接調(diào)用它。
Effective Java有一個關(guān)于使用靜態(tài)工廠方法的冗長條目(它是條目 1 或條目 2,我忘記是哪個了)。它引用的第一個優(yōu)點是它們的行為類似于命名構(gòu)造函數(shù)。
很明顯,即使沒有閱讀 Javadoc,它LocalDate.now()
也會返回一個與“現(xiàn)在”相對應(yīng)的日期。雖然您可以讓默認構(gòu)造函數(shù)做同樣的事情,但這并不明顯。
添加回答
舉報