我想知道是否有可能使用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. 阅读属性文件失败
- 3. 阅读JAR文件之外的属性文件
- 4. 阅读Gradle插件的SonarQube属性
- 5. Java属性的HashMap阅读
- 6. 阅读休眠配置文件中的属性
- 7. 阅读Spring Validator类中属性文件的内容
- 8. 如何阅读C#中的自定义文件属性
- 9. 阅读javascript中的XML属性
- 10. 阅读React中的弹簧属性
- 11. 如何阅读Visio中Shape的属性
- 12. 阅读Silverlight中的MP3标签属性
- 13. 阅读ASP.NET中的AssemblyTitle属性
- 14. VueJS阅读Dom属性
- 15. PHP SoapClient和阅读属性
- 16. 阅读选项属性
- 17. 阅读远程属性
- 18. 在接口中实现接口属性?
- 19. 阅读具有多个属性的JSON文件
- 20. 阅读位于服务器上的属性文件从Javascript
- 21. 阅读Java属性文件的最佳选择是什么?
- 22. 问题与阅读的Maven配置文件属性
- 23. 阅读由Apache FOP生成的Ant属性文件
- 24. 阅读竹上特定阶段的特定属性文件
- 25. 带拉丁字符的阅读器属性文件
- 26. 蚂蚁阅读密钥值的属性文件
- 27. 如何阅读置于战争外的属性文件?
- 28. 阅读的Windows文件摘要属性(标题,主题,作者)
- 29. 我如何阅读GDK的Title属性。窗口
- 30. 阅读JAR中的文件
这不会从属性文件中获取属性。 – BalusC