我有一個包含公共最終靜態變量的模型,我想用它來實例化另一個類(Spring 類@service)的私有最終靜態變量,例如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始終被正確實例化?
1 回答

翻過高山走不出你
TA貢獻1875條經驗 獲得超3個贊
是的。在一般情況下,類是延遲加載的,這樣做時發生的第一件事是運行靜態初始化程序/評估靜態屬性,這本身將觸發加載包含這些靜態初始化程序或屬性引用的屬性的任何類。
正如 ruakh@ 指出的,當常量的定義是純靜態的(即不涉及任何方法調用)時,編譯器有特殊的規則。在這種情況下,編譯器本身可以評估常量,這有時是必要的(例如,如果該值是注釋字段中的引用,則必須靜態處理該常量)。
無論如何,據我所知,你所做的事情絕對不會有問題。你擔心什么?
添加回答
舉報
0/150
提交
取消