Próbuję zmodyfikować klasę AuthenticatedUser
, aby zapisać listę AdminRole
. AuthenticatedUser
to klasa używana przez wszystkie moje aplikacje; zostanie wprowadzony do sesji, gdy użytkownik zaloguje się pomyślnie. Teraz chcę dodać listę ról autoryzacji do sesji użytkownika. Jednak każda aplikacja definiuje nieco inną klasę: AdminRole
. Na przykład, moje bazy DataCenter Aplikacja przechowuje w bazie danych:Java Klasa abstrakcyjna i generics
employee_id
role_name
site_name
receive_email
Nie wszystkie moje aplikacje będą musiały pole receive_email lub może chcieć przedłużyć własne metody. Pomyślałem, że to wymaga klasy abstrakcyjnej. Ale Eclipse narzeka na niewłaściwy typ w ustawieniu Authorized_role_list tutaj w tym fragmencie.
DataCenterAdminRoleDAO dcAdminDao = new DataCenterAdminRoleDAO();
try {
List<DataCenterAdminRole> authorized_roles = dcAdminDao.getAuthorizedRoleListByBadge(authenticatedUser.getBadge());
authenticatedUser.setAuthorized_role_list(authorized_roles);
=== Classes
public class AuthenticatedUser extends Employee implements Serializable {
private static final long serialVersionUID = 1L;
private List<AdminRole> authorized_role_list;
...
}
public abstract class AdminRole implements Serializable {
private static final long serialVersionUID = 1L;
private String role_name; //regular, admin, editor, etc..
private String site_id; //company branches
...
}
public class DataCenterAdminRole extends AdminRole implements Serializable {
Oczywiście poprawka jest powrót listę AdminRole
w moim Datacenter implementacja ale myślałem, poprzez rozszerzenie klasy abstrakcyjnej mogę przekazać podklasy. czego mi brakuje?
Spróbuj utworzyć [sscce] (krótki, własny, poprawny przykład). Rozumiem, że masz błąd kompilacji, ale możesz skomentować ten wiersz. Wklej również rzeczywisty błąd zgłoszony przez Eclipse bez przeprogramowywania. –