【发布时间】:2023-03-10 23:36:01
【问题描述】:
我有一个域类(DB):
public class PersonDoamin {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
我也有模型类:
public class PersonBean extends PersonDoamin {
}
所以当我转到 DAOImpl 类并查询 List 并将此列表传输到 List 并返回给用户时,因为我有 List getAllPerson() 的接口方法。所以当我从 List 传输所有数据时,我的问题就在这里。这里我有一些实用方法,可以像这样从一个 bean 复制到另一个:
List<PersonDoamin> list = PersonDAO.getAllPersons();
List<PersonBean> pbList = new ArrayList<PersonBean>();
/* this below logic is pretty much in the all DAO impl*/
for(PersonDoamin p : list){
PersonBean pb = new PersonBean();
CopyHelper.copyBean(p, pb);
pbList.add(pb);
}
return pbList;
我们是否可以用某种通用方法替换循环和复制以及添加到另一个列表并返回部分,该方法将获取任何对象两个列表并循环遍历一个并将其添加到另一个传递的列表参数并返回它。像下面这样的东西现在还不完美:
public static <T> List<T> listToArray(List<T> list,List<T> list2) {
for(T element : list){
list2.add(element);
}
return list2;
}
public static void main(String[] args) {
List<PersonDoamin> personList = new ArrayList<PersonDoamin>();
PersonDoamin p = new PersonDoamin();
p.setName("aj");
p.setAge("25");
personList.add(p);
List<PersonBean> personBeansToReturn = new ArrayList<PersonBean>();
Test.listToArray(personList , personBeansToReturn );
}
【问题讨论】:
-
PECS 可能会有所帮助:stackoverflow.com/questions/2723397/…
-
我想我看到的一个问题是您试图将
PersonDomain放入PersonBean列表中,但这是行不通的。 -
您在
listToArray中写的内容与您在原始循环中所做的不一致。您没有将域转换为 bean -
哦,也许这就是问题所在。 OP 是否正在寻找一种在泛型类型上调用
new T的方法?
标签: java list generics collections