ListResourceBundle 実装では、null 値を含むいくつかのキーを持つ配列を定義します。null 値を含むバンドルのロード プロセスを正常にコンパイルします。ただし、null 以外の値を持つキーで getObject を呼び出すと (次の例のように、値が "high" の "Pollution" のように)、NullPointerException が返されます。
なぜそれがそのように起こるのか、あなたには考えがありますか?
ResourceBundle labels = ResourceBundle.getBundle("bundlething", new Locale("it"));
labels.getObject("Pollution");// here NullPointerException, However Pollution has a \n
値、同じ配列の他のキーはそうではありません。
更新:これは私が受け取るスタックトレースです:
スレッド「メイン」での例外ResourceBundleThing.main(ResourceBundleThing.java:38) の ResourceBundle.java:387)
Locale("it")
これは、ターゲットとしてnew を渡してロードするバンドルですLocale
。
import java.util.ListResourceBundle;
public class bundlething_it extends ListResourceBundle {
private Object [][] contents ={{"Inhabitants",null},{"Pollution",new Double(3.4034)},{"Lollerball",new Integer(132)}};
public Object[][] getContents()
{
return contents;
}
}
"Inhabitans" に対応する null がありますが、null 以外の値を持つ "Pollution" のみを参照しています。それでも NullPointerException が発生します。そのnullを「住民」から削除すると機能します..そこに問題があることはわかっています。ただし、その特定のキーと値のペアを使用していないため、理由を知りたいです。getObject が呼び出されるとすぐにすべての値をロードしますか?
前もって感謝します。