如何在java中加载属性文件而不单独调用laod方法
如何在java中加载属性文件而不单独调用laod方法 我希望在实例化properties对象本身时加载该文件。 就像我在下面贴的一样,但我无法成功如何在java中加载属性文件而不单独调用laod方法,java,Java,如何在java中加载属性文件而不单独调用laod方法 我希望在实例化properties对象本身时加载该文件。 就像我在下面贴的一样,但我无法成功 class test{ Properties configFile = new Properties(load(new FileInputStream("config.properties")); } 大致如下: class Test { Properties configFile = new Properties() {{ load(ne
class test{
Properties configFile = new Properties(load(new FileInputStream("config.properties"));
}
大致如下:
class Test {
Properties configFile = new Properties() {{ load(new FileInputStream("config.properties")); }};
}
实际上,您正在对属性进行子分类,并使用其初始化部分。
如果需要添加一个
try{…}catch(){}
的话,load(..)可能会抛出一个异常:
class Test {
Properties configFile = new Properties() {{ load(new FileInputStream("config.properties")); }};
}
实际上,您正在对属性进行子分类,并使用其初始化部分。
如果您需要添加一个
try{…}catch(){}
只需创建一个单独的方法即可执行此操作-可能在您可以在其他地方使用的帮助器类中:
public class PropertiesHelper {
public static Properties loadFromFile(String file) throws IOException {
Properties properties = new Properties();
FileInputStream stream = new FileInputStream(file);
try {
properties.load(stream);
} finally {
stream.close();
}
return properties;
}
}
请注意,由于可能出现
IOException
,您仍然需要小心从何处调用它。如果要在实例初始值设定项中使用它,则需要声明所有构造函数都可以抛出IOException
只需创建一个单独的方法即可-可能是在可以在其他地方使用的帮助器类中:
public class PropertiesHelper {
public static Properties loadFromFile(String file) throws IOException {
Properties properties = new Properties();
FileInputStream stream = new FileInputStream(file);
try {
properties.load(stream);
} finally {
stream.close();
}
return properties;
}
}
请注意,由于可能出现
IOException
,您仍然需要小心从何处调用它。如果您想在实例初始值设定项中使用它,您需要声明所有构造函数都可以抛出IOException
通过抛出随机语句来编程,以防混淆。为什么人们有兴趣在一条“单行线”里做这件事?假定的优势是什么?我猜是在字段中完全实例化它(也加载它),而不是在构造函数或类似的方法中进行实例化。根据具体情况,我想这可能是可以的,例如测试、简单程序等。实际上,我想在方法之外进行初始化,我的意思是在声明变量的地方,我不想进入方法并进行初始化。。也许我错了。。。我只是想知道有没有可能做到这一点?给定一个read抛出异常,它不能在方法外声明为单行语句@脉冲星:未来的提示。当我问这样的问题时,我需要的是OP的回答,而不是有帮助的路人的猜测。OTOH谢谢您的尝试。:)好吧,在我回答了下面的问题后,我又加了一条评论。我可能应该用“可能是的……请看我下面的答案”来表达我的意见。如果您有任何困惑,编程不能通过随机语句来工作。为什么人们有兴趣在一条“单行线”里做这件事?假定的优势是什么?我猜是在字段中完全实例化它(也加载它),而不是在构造函数或类似的方法中进行实例化。根据具体情况,我想这可能是可以的,例如测试、简单程序等。实际上,我想在方法之外进行初始化,我的意思是在声明变量的地方,我不想进入方法并进行初始化。。也许我错了。。。我只是想知道有没有可能做到这一点?给定一个read抛出异常,它不能在方法外声明为单行语句@脉冲星:未来的提示。当我问这样的问题时,我需要的是OP的回答,而不是有帮助的路人的猜测。OTOH谢谢您的尝试。:)好吧,在我回答了下面的问题后,我又加了一条评论。我可能应该用“可能是的……请看我下面的答案”这样的措辞,通常不会,因为这样您就不会有错误处理(没有回退,没有恢复,可能没有错误消息等)。有时也可能有点难以阅读,并且可能会在代码中收到序列化警告(当对可序列化类进行子分类时,使其可读性降低,尝试修复该问题等)。您正在进行I/O,这通常是错误的。但是如果是针对单元测试或小型测试程序等,那么这当然是可以讨论的。之前提到过,但是类测试{
应该是类测试{
同时考虑了Java关键字和常用Java术语。谢谢,修复了,我只是从问题中复制了它,并集中于重要部分。当我使用它时,我得到了错误可序列化类没有声明long类型的静态最终SerialVersionId字段
不是一个错误,只是一个警告。但我尝试了o警告您:)序列化警告,因此您必须在第一个花括号后添加如下内容:private static final long serialVersionUID=1L;
。可读性变差…通常不会,因为这样您就不会有错误处理(没有回退,没有恢复,可能没有错误消息等)。有时也可能有点难以阅读,并且可能会在代码中收到序列化警告(当对可序列化类进行子分类时,使其可读性降低,并尝试修复该问题等)。您正在进行I/O,这通常是错误的。但是,如果是针对单元测试或小型测试程序等,这当然是可以讨论的。之前提到过,但类测试{
应该是类测试{
同时考虑了Java关键字和常用Java术语。谢谢,修复了,我只是从问题中复制了它,并集中于重要部分。当我使用它时,我得到了错误可序列化类没有声明long类型的静态最终SerialVersionId字段
不是一个错误,只是一个警告。但我尝试了o警告您:)序列化警告,因此您必须在第一个花括号后添加如下内容:private static final long serialVersionUID=1L;
。可读性变差…我复制了此方法并粘贴到类中,并将该方法称为Properties config=loadFromFile(“config.Properties”);
但是它显示了错误未报告的异常java.io.IOException;必须被捕获或声明为抛出(基本上,您需要确保