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实现中的列表,但我想通过扩展抽象类我可以传递子类.我错过了什么?
如果是设置器给您带来麻烦,您可以使用带有通配符的下界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)
| 归档时间: |
|
| 查看次数: |
667 次 |
| 最近记录: |