我有一個(gè)包含公共最終靜態(tài)變量的模型,我想用它來(lái)實(shí)例化另一個(gè)類(Spring 類@service)的私有最終靜態(tài)變量,例如public class MyClass { public static final String MY_CLASS_MSG = "My Class";}@Servicepublic class MyService { private static final String MY_SERVICE_MSG = "My Service" + MyClass.MY_CLASS_MSG;}我能否始終保證MY_SERVICE_MSG始終被正確實(shí)例化?
1 回答

翻過(guò)高山走不出你
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
是的。在一般情況下,類是延遲加載的,這樣做時(shí)發(fā)生的第一件事是運(yùn)行靜態(tài)初始化程序/評(píng)估靜態(tài)屬性,這本身將觸發(fā)加載包含這些靜態(tài)初始化程序或?qū)傩砸玫膶傩缘娜魏晤悺?/p>
正如 ruakh@ 指出的,當(dāng)常量的定義是純靜態(tài)的(即不涉及任何方法調(diào)用)時(shí),編譯器有特殊的規(guī)則。在這種情況下,編譯器本身可以評(píng)估常量,這有時(shí)是必要的(例如,如果該值是注釋字段中的引用,則必須靜態(tài)處理該常量)。
無(wú)論如何,據(jù)我所知,你所做的事情絕對(duì)不會(huì)有問(wèn)題。你擔(dān)心什么?
添加回答
舉報(bào)
0/150
提交
取消