数据结构java。尝试打印或引用存储类中的int[]和int时发生lang.ClassCastException
我有一个简单的类似数据库的项目,它将用户名和加密密码放在HashMap
中,在一个单独的HashMap
中,将用户名和一个存储对象(称为PasswordData
)关联起来,该存储对象包含一个整数数组(加密库将其用作密钥)和一个库也使用的整数。这一切都很好,但问题出现在代码的第二个函数中。我有一些方法专门用于将HashMap
复制到文件中,后者可以读取,文件中的信息可以在HashMap
中恢复。但是,当尝试对PasswordData
内的变量执行任何操作时,我会遇到以下异常:
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to webappserver.PasswordData".
我发现,无论我如何处理上述变量,JVM都声称我试图将存储类转换为字符串。如果我遗漏了任何重要信息,请通知我,我将尝试编辑任何可能需要的内容
存储类:
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();
}
注意:printStackTrace
将for语句的第一行标记为ClassCastException
的位置,但是删除它只会导致现在修改为Save.write(passwordDataArrayList.get(i).returnKey().toString());
的第二条语句返回相同的错误
共 (0) 个答案