java.lang.ClassCastException При попытке напечатать или ссылаться на int [] и int в классе хранения - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть простой проект, похожий на базу данных, который предназначен для помещения имен пользователей и зашифрованных паролей в HashMap и, в отдельном HashMap, ассоциированных имен пользователей и объекта хранения (называемого PasswordData), который содержит целое числомассив (это используется в качестве ключа библиотекой шифрования) и целое число, которое также используется библиотекой.Это все работает хорошо, но проблема заключается во вторичной функции кода.У меня есть несколько методов, предназначенных для копирования HashMap s в файлы, которые впоследствии могут быть прочитаны, и информация внутри файлов может быть восстановлена ​​в HashMap.Однако, пытаясь что-то сделать с переменными внутри PasswordData, я получаю следующее исключение:

Исключение в потоке "main" java.lang.ClassCastException: java.lang.String не может бытьприведение к webappserver.PasswordData ".

Я обнаружил, что независимо от того, что я пытался сделать с указанными переменными, JVM утверждала, что пыталась привести класс хранения к типу String. Если я пропустила какой-либожизненно важная информация, пожалуйста, сообщите мне, и я постараюсь отредактировать все, что может потребоваться.

Класс хранения:

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());, возвращая ту же ошибку.

...