Java 是列表<;T>;好的收藏品要退货吗?如何包装它并添加属性?
在我的DAO类中,我返回一个实体列表 您是否建议我使用Java 是列表<;T>;好的收藏品要退货吗?如何包装它并添加属性?,java,generics,Java,Generics,在我的DAO类中,我返回一个实体列表 您是否建议我使用列表如: List<User> findAllUsers(...); 列出findalluser(…); 在我的db调用中,我想包装集合并创建一个继承列表的结果列表(或您建议我使用的任何通用集合),并向其中添加一些属性,我该如何做 public class ResultList<T> extends List<T> { private int SomeThing; // getter/se
列表
如:
List<User> findAllUsers(...);
列出findalluser(…);
在我的db调用中,我想包装集合并创建一个继承列表的结果列表
(或您建议我使用的任何通用集合),并向其中添加一些属性,我该如何做
public class ResultList<T> extends List<T> {
private int SomeThing;
// getter/setter
}
公共类结果列表扩展列表{
私人的东西;
//吸气剂/塞特
}
这(上面)是最好的方法吗?返回一个通用列表是DAO的标准实践。至于问题的第二部分,我建议只返回一个列表,然后在结果列表上定义一个复制构造函数,该构造函数接受一个泛型列表作为参数。这是一个干净且可扩展的解决方案,当然假设您的ResultList实例不需要仅在DAO方法调用范围内可用的信息
List<User> data = userDao.findAll();
ResultList<User> results = new ResultList<User>(data);
List data=userDao.findAll();
结果列表结果=新结果列表(数据);
我不一定要扩展列表
,而是像我一样保留列表
的一个实例
公共类结果列表{
私有列表备份列表;
私人的东西;
//吸气剂/塞特
}
从这里,您可以定义自己委托给支持列表的方法
但实际上,你所拥有的应该可以很好地满足你所要做的事情。它可能会使将来的更改变得更加困难。List
是一个接口,而不是一个类,因此您将使用List
接口实现一个类
如果您想添加额外的属性,那么可能应该首先扩展列表
接口,然后实现它
public class ResultList<T> extends List<T> {
// getter/setter declarations
}
public class ResultListImpl<T> implements ResultList<T> {
private int SomeThing;
// getter/setter implementations
}
公共类结果列表扩展列表{
//getter/setter声明
}
公共类ResultListImpl实现ResultList{
私人的东西;
//getter/setter实现
}
我看不出你那里有什么问题。你可以主张组合而不是继承(正如我在这里所做的),但归根结底是个人偏好。您的实体是否都继承自一个公共超类?然后你可以把它说得更具体一点
public class ResultList<T extends BaseEntity> {
private List<T extends BaseEntity> list;
private int SomeThing;
}
公共类结果列表{
私人名单;
私人的东西;
}
public class ResultList<T extends BaseEntity> {
private List<T extends BaseEntity> list;
private int SomeThing;
}