在 ListResourceBundle 实现中,我定义了一个数组,其中包含一些包含空值的键。它可以很好地编译包含空值的包的加载过程。但是,当我在具有非空值的键上调用 getObject 时(如下例中的“污染”,其值为“高”),它给了我一个 NullPointerException。
你知道为什么会这样吗?
ResourceBundle labels = ResourceBundle.getBundle("bundlething", new Locale("it"));
labels.getObject("Pollution");// here NullPointerException, However Pollution has a \n
值,同一数组的其他键没有。
更新:这是我收到的堆栈跟踪:
在 java.util.ListResourceBundle.handleGetObject(ListResourceBundle.java:124) 在 java.util.ListResourceBundle.loadLookup(ListResourceBundle.java:196) 在 java.util.ResourceBundle.getObject( ResourceBundle.java:387) 在 ResourceBundleThing.main(ResourceBundleThing.java:38)
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”的空值,但我仅指具有非空值的“污染”。我仍然得到一个 NullPointerException;如果我从“居民”中删除该空值,它就可以工作..所以问题就在那里,我知道。但是我想知道为什么,因为我没有使用那个特定的键值对。它是否会在调用 getObject 后立即加载所有值?
提前致谢。