Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中加载属性文件而不单独调用laod方法_Java - Fatal编程技术网

如何在java中加载属性文件而不单独调用laod方法

如何在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

如何在java中加载属性文件而不单独调用laod方法 我希望在实例化properties对象本身时加载该文件。 就像我在下面贴的一样,但我无法成功

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;必须被捕获或声明为抛出(基本上,您需要确保