Java抽象类和泛型

jef*_*eff 5 java inheritance abstract-class

我正在尝试修改一个类AuthenticatedUser来存储一个列表AdminRole. AuthenticatedUser是我所有应用程序使用的类; 当用户成功登录时,它会进入会话.现在我想向用户会话添加授权角色列表.但是,每个应用程序对AdminRole类的定义略有不同.例如,我的DataCenter应用程序存储在数据库中:

  employee_id
  role_name
  site_name
  receive_email
Run Code Online (Sandbox Code Playgroud)

并非我的所有应用程序都需要receive_email字段,或者可能需要扩展自己的方法.我认为这需要一个抽象类.但是Eclipse在这个片段中抱怨了Authorized_role_list setter上的错误类型.

  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 {
Run Code Online (Sandbox Code Playgroud)

显然,修复是返回AdminRole我的Datacenter实现中的列表,但我想通过扩展抽象类我可以传递子类.我错过了什么?

cyo*_*yon 2

如果是设置器给您带来麻烦,您可以使用带有通配符的下界authorized_roles_list

private List<? extends AdminRole> authorized_role_list;
....
public setAuthorized_role_list(List<? extends AdminRole> authorized_roles) {
...
}
Run Code Online (Sandbox Code Playgroud)