一两个星期以来,我一直在努力解决这个问题,但无法做到。
我有两个类,MyApplication
和Store
。这只是一个测试程序,用于查看我的存储代码出了什么问题。
这是MyApplication
类
public class MyApplication {
private Form current;
private Resources theme;
private Store o;
public void init(Object context) {
theme = UIManager.initFirstTheme("/theme");
Util.register("Store", Store.class);
Toolbar.setGlobalToolbar(true);
}
public void start() {
if(current != null){
current.show();
return;
}
Form hi = new Form("Hi World");
TextField enter = new TextField("","Enter Here", 20, TextField.ANY);
Button add = new Button("Add");
add.addActionListener((ev)->
o.add(enter.getText() + "", 100)); /*Failing here*/
hi.add(enter).add(add);
hi.show();
}
private void save()
{
Storage.getInstance().writeObject("NameOfFile", o);
}
private void load()
{
o = (Store) Storage.getInstance().readObject("NameOfFile");
}
public void stop() {
current = Display.getInstance().getCurrent();
if(current instanceof Dialog) {
((Dialog)current).dispose();
current = Display.getInstance().getCurrent();
}
}
public void destroy() {
}
}
这是
Store
类public class Store implements Externalizable {
private static final int VERSION = 1;
HashMap<String, Integer> data;
public void externalize(DataOutputStream out) throws IOException
{
Util.writeObject(data, out);
}
public void internalize(int version, DataInputStream in) throws IOException
{
data = (HashMap<String, Integer>)Util.readObject(in);
}
public void add(String s, Integer i)
{
data.put(s, i);
}
public int getVersion()
{
return VERSION;
}
public String getObjectId()
{
return "Store";
}
}
我以前在
MyApplication
类中使用了哈希映射指针,但在同一位置失败了。 最佳答案
您发布的代码似乎没有在任何地方初始化data
HashMap。您没有在调用load()
方法,实际上也没有在任何地方创建Hashmap。因此,您突出显示的行可能会因NPE而失败。
将来,您不仅应包括“在这里失败”信息,还应包括更多信息。如果有堆栈跟踪,请始终提供。如果没有堆栈跟踪,那么您需要描述如何知道它在那里失败。