我想知道下面的代碼是否安全。試圖訪問另一個靜態變量的靜態變量
public class GUIBundle {
// The technique known as the initialization on demand holder idiom,
// is as lazy as possible.
// http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom
//private static class BundleHolder {
// private static final ResourceBundle bundle = ResourceBundle.getBundle("org.yccheok.jstock.data.gui");
//}
private static final ResourceBundle bundle = ResourceBundle.getBundle("org.yccheok.jstock.data.gui");
private GUIBundle() {
}
public static String getString(String key) {
// return BundleHolder.bundle.getString(key);
return bundle.getString(key);
}
}
public class SellPortfolioChartJDialog extends javax.swing.JDialog {
private static final String[] cNames = new String[] {
GUIBundle.getString("BuyPortfolioTreeTableModel_NetGainValue")
};
}
由於CNAMES是靜態的範圍內,它是安全的它來訪問靜態捆綁?是否使用惰性初始化技術有什麼不同?
我記得我遇到過一篇文章(我遺失了文章),談論靜態變量的初始化順序的不確定性。我不確定靜態變量的初始化順序的不確定性是否適用於上述情況?
你的API返回'的String []' - 這無論如何都不會編譯。我認爲我理解了這個主題,如果你糾正了你的代碼,我認爲這會起作用(安全)。 – 2010-07-02 13:40:22
@ring他正在建造一個帶有1個字符串的String []。 – corsiKa 2010-07-02 13:42:32
getString方法應該有「返回bundle.getString(key)」和一個';'爲cNames是失蹤,...它編譯,我猜是因爲評論代碼的錯字:) – naikus 2010-07-02 13:43:22