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