Java 是列表<;T>;好的收藏品要退货吗?如何包装它并添加属性?

Java 是列表<;T>;好的收藏品要退货吗?如何包装它并添加属性?,java,generics,Java,Generics,在我的DAO类中,我返回一个实体列表 您是否建议我使用列表如: List<User> findAllUsers(...); 列出findalluser(…); 在我的db调用中,我想包装集合并创建一个继承列表的结果列表(或您建议我使用的任何通用集合),并向其中添加一些属性,我该如何做 public class ResultList<T> extends List<T> { private int SomeThing; // getter/se

在我的DAO类中,我返回一个实体列表

您是否建议我使用
列表
如:

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;

}