我想知道是否有可能使用java或使用spring messageSource在屬性文件的接口中初始化常量,或者這種事情是不可能的 請指教,謝謝。閱讀屬性文件中的接口
回答
用戶可以:
public interface Foo {
String a = Properties.getProperty("foo"); // public static final by default
}
然而,這意味着Properties.getProperty(..)
必須是其依賴已初始化的消息源上的一個靜態方法(靜態再次)。取決於您使用的項目和框架,這可能不是最佳選擇。
您可以通過包含final
成員的配置初始化bean。既然它是最終的,你可以在構建/初始化時分配給它,然後它是不可變的。
要使用Spring配置屬性文件,請檢查PropertyPlaceholderConfigurer。這將允許您使用您的類路徑,文件系統,遠程服務等一個或多個屬性文件的Spring bean
是的,這是可能的,初始化:
public static final CONSTANT = System.getProperty("myProperty");
通過讀取屬性文件,就像在下面的例子中。
int property1;
String otherProperty;
public void loadProperties(File propFile) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(propFile));
String line;
while ((line = reader.readLine()) != null) {
if (line.startsWith("Property1=")) {
property1 = Integer.parseInt(line.substring(10));
}
if (line.startsWith("OtherProperty=")) {
otherProperty = line.substring(14);
}
}
}
您無法將該代碼放入界面。 –
雖然使用一些靜態輔助方法(如已經建議)是可能的,我會強烈建議你不要2倍這樣做的原因:
- 這看起來像一個非常糟糕的設計。如果您需要動態值 - 使其成爲界面中的一種方法。或者直接使用一個靜態助手 - 無論如何你都需要一個靜態助手來使它工作。
- 常量可能是在編譯時內聯。這種情況不應該發生在這種特殊情況下 - 編譯器只有在能夠證明在執行過程中值不會發生變化的情況下,才應該使用內聯,基本上,如果您使用文字初始化它,但這樣做的可能性很小。只要想一想它會有多糟糕 - 無論程序在哪個環境下運行,它都會在編譯期間收集一些無用的值,而不是配置的值。 (這是一個理論問題,需要說)。
好的,我的第二點是不相關的 - 按照Java語言規範9.3.1:「接口體中的每個字段都必須有一個初始化表達式,它不一定是一個常量表達式。當接口初始化時(第12.4節),賦值只執行一次。「 所以這是一種有效的方法......但仍然非常難看。 –
- 1. 閱讀屬性文件
- 2. 閱讀Java中的屬性文件
- 3. 閱讀給定文件的屬性
- 4. 閱讀glassfish上的屬性文件4
- 5. 閱讀外部屬性文件
- 6. 閱讀屬性文件失敗
- 7. 閱讀ConfigurationSectionGroup中的屬性
- 8. 閱讀XML屬性
- 9. 閱讀鏈接的文件
- 10. 閱讀JAR文件之外的屬性文件
- 11. 閱讀Maven的pom.xml文件中的JVM屬性
- 12. 閱讀Gradle插件的SonarQube屬性
- 13. Java屬性的HashMap閱讀
- 14. 閱讀性能在PowerShell中的文件
- 15. 閱讀所有屬性目錄中的文件
- 16. 閱讀休眠配置文件中的屬性
- 17. 閱讀Spring Validator類中屬性文件的內容
- 18. 如何閱讀C#中的自定義文件屬性
- 19. 閱讀GWT UI Binder類中的屬性文件
- 20. 通過閱讀屬性文件螞蟻複製文件
- 21. 接口中的屬性屬性
- 22. AutoIt - 如何閱讀pdf文檔屬性
- 23. 閱讀XML屬性和文本
- 24. 閱讀ASP.NET中的AssemblyTitle屬性
- 25. 如何閱讀C#中的Windows.UI.XAML.Style屬性
- 26. 閱讀Silverlight中的MP3標籤屬性
- 27. 閱讀javascript中的XML屬性
- 28. 閱讀React中的彈簧屬性
- 29. 如何閱讀Visio中Shape的屬性
- 30. 閱讀選項屬性
這不會從屬性文件中獲取屬性。 – BalusC