Я работаю над этой простой Java-программой и в момент, когда она генерирует «ClassCastException», и я не могу понять, почему. Что происходит в программе, она считывает из 2 текстовых файлов и хранит их в объекте Arraylists
(потому что я использую тот же метод для чтения обоих файлов)ClassCastException в Runtime
Позже, когда я пытаюсь применить эти объекты к пользовательским типам данных I Сделано, программа выдает эту ошибку. Что я делаю не так?
public void staffFunctions() {
ArrayList<Object> staffs = TextFileHandler.readFile(staffText,userState);
for(Object obj: staffs) {
Staff staff = (Staff) obj;
if (staff.getUsername().equals(username) && staff.getPassword().equals(password)) {
staffMenu(staff);
} else {
System.out.println("Username/Password Invalid.");
}
}
}
^^ Это требует меню, связанных с персоналом.
ArrayList<Object> clients = TextFileHandler.readFile(accText, userState);
System.out.print("Enter Client Username > ");
String usernameClient = input.next();
System.out.print("Enter amount > ");
int amount = input.nextInt();
for(Object objs: clients) {
Customer customer = (Customer) objs;
if(customer.getUsername().equals(usernameClient)){
ClientFunctions.withdraw(customer, username, amount);
} else {
System.out.println("Invalid Client Username!");
}
}
^^ Вот где я получаю исключение, точно в «Customer customer = (Customer) objs;»
У меня есть два Класса Клиент и Персонал. И он выбрасывает «Исключение в теме« main »java.lang.ClassCastException: Персонал не может быть передан клиенту», во время выполнения. Время компиляции не вызывает никаких проблем.
ReadFile Метод // Update
public static ArrayList<Object> readFile(String fileName, int userState) {
String line = null;
ArrayList<Object> elements = new ArrayList<>();
try {
fileReader = new java.io.FileReader("src/" + fileName);
bufferedReader = new BufferedReader(fileReader);
while ((line = bufferedReader.readLine()) != null) {
String element[] = line.split(" ");
if (userState == 1) {
Customer customer = new Customer(element[1], element[3], element[5], element[7], element[9], element[11]);
elements.add(customer);
} else {
Staff staff = new Staff(element[1], element[3]);
elements.add(staff);
}
}
bufferedReader.close();
} catch (FileNotFoundException ex) {
System.out.println("Unable to open file '" + fileName + "'");
} catch (IOException ex) {
System.out.println("Error reading file '" + fileName + "'");
}
return elements;
}
Что я здесь делаю неправильно? Заранее спасибо.
Каков конкретный тип элементов в 'staffs' * во время выполнения * Виртуальная машина Java говорит вам, что бы они ни были, они **? а не 'Staff' экземпляры. ** –
Я не понимал, что вы сказали Мэтт, извините. –
Пожалуйста, отредактируйте свой вопрос, чтобы показать, как заполняются клиенты. Очевидно, что в нем есть объекты Staff.Я бы рекомендовал изменить код, чтобы клиенты не были списком объектов. Это трудно понять. –