3
我已經開始閱讀Apache公共資料文檔,但它的內容非常廣泛,所以我希望有人可以回答一個簡單的問題,所以我不需要閱讀所有內容纔開始使用它進行基本配置。我很快失去了耐心 - 沒有「快速入門」章節,在決定是否要使用該庫之前,我不需要知道每一個細節。單身配置類?具體示例
我想(我認爲是一個常見的用例)一個靜態方法提供查找屬性的類。
E.g.在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;
不會編譯: Settings.java:9:錯誤:變量配置可能尚未初始化 – user1443778
@ user1443778這不是一個完整的例子 - 你必須自己完成它。由於'config'是'final',它必須被初始化。如果發生異常,您必須將其初始化爲某種東西。例如,將其設置爲'null'或其他適當的值(可能是具有默認設置的對象?)在「catch」塊中。 – Jesper
Settings.java:22:error:變量config可能已經被分配了 [javac] \t config = null; 所以它不能是最終的? – user1443778