這是一個簡單的問題,我無法找到最後的答案。爲什麼不使用ResourceBundle而不是Properties?
我可以從config.properties
文件加載字符串屬性(例如:準備語句的查詢)。假設我想要連接數據庫連接。
如果我想借此從文件信息,我所能做的只是在一個類中的以下內容:
private static final ResourceBundle BUNDLE = ResourceBundle.getBundle("scheduler");
private static final String DRIVER = BUNDLE.getString("bd.driver");
private static final String CONNECTIONURL =BUNDLE.getString("bd.url");
....
而是我見過很多人建議使用替代屬性,然後我會在做同樣的像這樣的東西(如果我想保持類的靜態,而不是有一個適當的構造函數):
static {
prop = new Properties();
try { prop.load(ReportsDB.class.getClassLoader().getResourceAsStream("config.properties"));
} catch (IOException ex) {
Logger.getLogger(ReportsDB.class.getName()).log(Level.SEVERE, null, ex);
throw new RuntimeException(ex);
}
}
private static final String DRIVER = prop.getProperty("bd.driver");
private static final String CONNECTIONURL = prop.getProperty("bd.url");
那麼,爲什麼我不應該使用的ResourceBundle
代替Properties
當第二個是更詳細?
容易,但感謝您的解釋。雖然我知道這個課程的目的是,如果它符合你的要求,爲什麼不使用它?它慢嗎?它是否有任何可能會失敗的邊界情況?也許是毫無意義的,但我真的想知道是否有任何其他原因 – 2013-02-14 20:20:07
@ChristianVielma:因爲它讓你的代碼*看起來像它試圖實現一件事,當它真的試圖做別的事情時。 *至少*將其隱藏在一個地方,記錄你爲什麼要這樣做 - 但理想情況下只是使用他們想要使用的類,並且你會得到更少的驚喜。 (就像那些閱讀你的代碼一樣。) – 2013-02-14 20:24:55