我有靜態final字段的類,我想從我的上下文初始化它們。我可以這樣做嗎?或者我必須尋找另一種解決方案?如何在Spring中從上下文設置靜態最終參數?
1
A
回答
3
因爲final
變量是有效的常量,必須在初始化過程中準確定義一次,所以不能在Spring(或通常用Java)中執行此操作。但看看:Java 5 - "final" is not final anymore。
0
這是final
,那是怎麼回事?
您可以通過使用非反射Java提供一個常規設置器來分配給一個非 - final
靜態變量。您可以使用Tomasz指出的反射來設置最終字段。
+0
'final'是一次寫入變量。用'private final String'創建一個類,不要初始化它,然後根據構造函數參數值在構造函數中設置值。 – DwB
+0
@DwB如果你可以做ctor注射,那很好;這並不總是可能的。 –
0
根據「matt b」的評論,您可以從變量聲明中刪除最後一個,並在setter中實現「設置一次」功能。
例如:
private static String blammy = null;
public String getBlammy() { return blammy; }
public void setBlammy(String newValue)
{
if (StringUtils.isNotBlank(newValue)) // only set to a non blank value.
{
if (blammy == null) // set once functionality
{
blammy = newValue;
}
}
}
相關問題
- 1. Spring:如何從XML上下文中設置FilterConfig中的參數
- 2. 在靜態塊中設置屬性文件值與上下文參數
- 3. 如何設置靜態類到數據上下文?
- 4. 如何從靜態上下文中引用非靜態方法
- 5. 如何模擬靜態方法設置的最終靜態變量?
- 6. 靜態或靜態最終
- 7. 如何在上下文xml文件中設置上下文參數?
- 8. 獲取從靜態上下文參數Axis2中
- 9. Spring測試@ContextConfiguration和靜態上下文
- 10. 從靜態上下文
- 11. 如何在Array.prototype.slice.call(參數)中設置'this'上下文
- 12. 如何從終端指定PHP靜態函數參數
- 13. 如何在jboss7中配置靜態上下文路徑?
- 14. Spring Hibernate - 設置靜態最終字符串來指示Hibernate實體的模式
- 15. 在Spring中存儲靜態最終常量?
- 16. 如何在cherrypy配置文件中設置靜態文件?
- 17. 最終靜態與非最終靜態變量?
- 18. 使用「最終靜態」還是「靜態最終」是否正確?
- 19. '公共靜態最終'或'私人靜態最終'與getter?
- 20. 最終靜態int和靜態最終int之間的區別?
- 21. Spring Boot:在logback配置中使用Tomcat上下文參數
- 22. 如何處理靜態最終變量
- 23. 如何在UWP中設置靜態IP?
- 24. 設置非靜態物體參數
- 25. 如何在Spring配置中傳遞靜態常量作爲參數?
- 26. 如何在Powershell中指定靜態和動態位置參數?
- 27. 如何解決非靜態方法不能從靜態上下文中引用?
- 28. 如何修復「無法從靜態上下文中引用非靜態方法」?
- 29. 如何從靜態上下文中引用非靜態方法'findViewById'?
- 30. 非靜態類不能從靜態上下文中引用
他們在聲明最後,我懷疑這將工作;) – HefferWolf
最簡單的解決方法是刪除了'靜態final'修飾符 –
的問題將是,你必須初始化(即集)'final'變量的值。如果沒有使用反射「破壞」變量的「最終性」,您將無法做到這一點。 – DwB