Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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 单例配置类?具体例子_Java_Apache Commons Config - Fatal编程技术网

Java 单例配置类?具体例子

Java 单例配置类?具体例子,java,apache-commons-config,Java,Apache Commons Config,我已经开始阅读ApacheCommons文档,但是它非常广泛,所以我希望有人能回答一个简单的问题,这样我就不需要阅读所有的文档就可以开始使用它进行基本配置了。我很快就失去了耐心——没有“快速入门章节”,我也不需要知道每一个细节,然后再决定是否使用图书馆 我想要(我认为是一个常见的用例)一个具有静态方法的类,该类提供属性的查找 例如,在课堂上,我可以使用Foo Settings.config.getString("paramter"); 在哪里 import org.apache.commo

我已经开始阅读ApacheCommons文档,但是它非常广泛,所以我希望有人能回答一个简单的问题,这样我就不需要阅读所有的文档就可以开始使用它进行基本配置了。我很快就失去了耐心——没有“快速入门章节”,我也不需要知道每一个细节,然后再决定是否使用图书馆

我想要(我认为是一个常见的用例)一个具有静态方法的类,该类提供属性的查找

例如,在课堂上,我可以使用Foo

Settings.config.getString("paramter"); 
在哪里

 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
 /**
  * Settings configuration class
  */
 public class Settings  {

     private static final DefaultConfigurationBuilder factory = new DefaultConfigurationBuilder("config.xml"); 
     public static final Configuration config= factory.getConfiguration();

}
问题是工厂方法可能引发异常!所以这段代码不能编译,一个类也不能抛出异常,所以我怀疑我需要做更多的编码

我怀疑有一个简单的解决办法。但它肯定不会打电话来

DefaultConfigurationBuilder factory = new DefaultConfigurationBuilder("config.xml"); 
Configuration config= factory.getConfiguration();
在我想阅读配置的每一堂课上


我试过:

public class Settings  {
 public static final Configuration config;
 static {
     try {
    DefaultConfigurationBuilder factory; 
    factory = new DefaultConfigurationBuilder("config.xml") ; 
         config = factory.getConfiguration();
     }
     catch (ConfigurationException e) {
         // Deal with the exception
    config=null;
    System.exit(1);
     }
 }
}
但我得到了编译错误:

 error: variable config might already have been assigned
   [javac]      config=null;

您可以将初始化
config
的代码放在静态初始值设定项块中,并在那里处理异常。例如:

public class Settings {
    public static final Configuration config;

    static {
        Configuration c = null;
        try {
            DefaultConfigurationBuilder factory = new DefaultConfigurationBuilder("config.xml");
            c = factory.getConfiguration();
        }
        catch (SomeException e) {
            // Deal with the exception
            c = null;
        }

        config = c;
    }
}

未编译:Settings.java:9:error:variable-config可能未使用initialized@user1443778这不是一个完整的例子——你必须自己完成。由于
config
final
,因此必须对其进行初始化。如果出现异常,您必须将其初始化为某个值。例如,将其设置为
null
catch
block.settings.java:22:error:variable config可能已经分配了[javac]config=null;所以它不可能是最终的?@user1443778我改变了答案(见上文),这样你就不会得到这个错误。