我有一个类似数据库的简单项目,该项目旨在将用户名和加密密码放入HashMap
中,并在单独的HashMap
中将用户名和存储对象(称为{{1} }),其中包含一个整数数组(加密库将其用作密钥)和一个也由该库使用的整数。这一切都很好,但是问题出在代码的辅助功能上。我有几种专用于将PasswordData
复制到文件中的方法,以后可以读取这些文件,并且可以在HashMap
中恢复文件内的信息。但是,在尝试对HashMap
内部的变量执行任何操作时,出现以下异常:
线程“ main”中的异常java.lang.ClassCastException:java.lang.String无法转换为webappserver.PasswordData”。
我发现,无论我试图使用所述变量做什么,JVM都声称我正在尝试将存储类转换为String。如果我缺少任何重要信息,请告知我,我将尝试编辑可能需要的任何内容。
存储类:
PasswordData
增强方法
public class PasswordData{
public int[] key;
public int index;
PasswordData(int[] key, int index){
this.key = key;
this.index = index;
}
public int[] returnKey(){
return key;
}
public int returnIndex(){
return index;
}
}
注意:public void writeFilePassData(HashMap passData, String fileName) throws IOException {
ArrayList<String> usersArrayList = new ArrayList<>(passData.keySet());
ArrayList<PasswordData> passwordDataArrayList = new ArrayList<> (passData.values());
BufferedWriter save = new BufferedWriter(new FileWriter(fileName));
for(int i =0; i< usersArrayList .size(); i++){
int[] ex = passwordDataArrayList .get(i).returnKey();
save.write(usersArrayList .get(i) + '\n');
save.write(ex.toString());
save.write(passwordDataArrayList .get(i).returnIndex().toString());
}
save.close();
}
将for语句的第一行标记为printStackTrace
的位置,但是删除它只会导致第二条语句现在修改为ClassCastException
并返回相同的内容错误。