【发布时间】:2018-06-27 20:50:56
【问题描述】:
大家好,我对开发和这个论坛还很陌生,想创建一个登录镜像。由于我的老师,我不得不使用 BlueJ,是的,我猜这可能不是学习写作的最佳方法之一(我们在学校必须使用的版本在编译之前甚至没有显示错误)(我个人开始使用 Eclipse 写作)。
我的问题是,我从 hasMapReader 获得的输出只是空,在我将 HashMap“保存”在一个新文件中并将其“写入”到另一个 HashMap 之后。
HashMap<String, Serializable> userAcc = new HashMap<String, Serializable>();
userAcc.put(name, value);
otherClass.hashMapSaver(userAcc, hashMapFile = new java.io.File(location));
public HashMap<String, Serializable> hashMapSaver(HashMap<String, Serializable> map, java.io.File file){
try{
FileOutputStream f = new FileOutputStream(file);
ObjectOutputStream s = new ObjectOutputStream(f);
s.writeObject(map);
s.close();
f.close();
}catch (IOException e) {
e.printStackTrace();
}
return map;
}
HashMap<String, Serializable> userAcc2 = new HashMap<String, Serializable>();
otherClass.hashMapReader(userAcc2, new java.io.File(hashMapFile));
(userAcc2 在第三个“主”类中) 然后是另一个类中的 hashMapReader:
public HashMap<String, Serializable> hashMapReader(HashMap<String, Serializable> map2, java.io.File file){
try{
FileInputStream f = new FileInputStream(file);
ObjectInputStream s = new ObjectInputStream(f);
map2 = (HashMap<String, Serializable>) s.readObject();
f.close();
s.close();
}catch (IOException e) {
e.printStackTrace();
return null;
} catch (ClassNotFoundException c) {
c.printStackTrace();
return null;
}
return map2;
}
System.out.println("userAcc2: " + userAcc2.get(name));
System.out.println("HashMap Keys: " + userAcc2.keySet());
但控制台只是打印出来:
userAcc2: null; HashMap 键:[]
我认为的另一个问题是,每次我启动这个程序时文件都可能被替换。
我现在正在尝试解决这个问题将近一周。
谢谢:),
【问题讨论】:
-
您在 catch 块中引入了 null 。 (1) 是否抛出异常? (2) 该方法实际上被调用了吗?打印行中引用的变量在哪里创建?
-
阅读ericlippert.com/2014/03/05/how-to-debug-small-programs 了解有关如何调试代码的提示。
标签: java null hashmap fileinputstream fileoutputstream