Mam klasę abstrakcyjną o nazwie Użytkownik, użytkownik może być utworzony jako typ Ucznia lub jako Nauczyciel. Zrobiłem ArrayList użytkowników (uczniów i nauczycieli) i co próbuję zrobić, to wezwać przykładowy sposób w zależności od tego, co obecny obiekt jest instancją:Wiele typów obiektów w jednej ArrayList
for (User user : listOfUsers) {
String name = user.getName();
if (user instanceof Student) {
// call getGrade();
} else { // it is an instance of a Teacher
// call getSubject();
}
}
Problem mam jest ponieważ jest to ArrayList obiektów User, nie może uzyskać metody typu Student, na przykład getGrade(). Ponieważ jednak jestem w stanie określić, na czym polega bieżący użytkownik, jestem ciekawy, czy nadal możliwe jest wywołanie konkretnej metody w zależności od typu użytkownika.
Czy to możliwe, czy muszę rozdzielić typy użytkowników na osobne listy?
Prosimy o odpowiedź wkrótce, wielkie dzięki.
Pomóż mi poprawić moją odpowiedź i skomentować głosowanie? – user987339
Świetna odpowiedź. Link, definicja i próbka. Choć może powinieneś zrobić jeszcze 'if (user instanceof Teacher) {}' i umieścić 'else' na dole tylko dla domyślnego zachowania –
Tnx @Nappa The Saiyan! – user987339