我有一个包含属性列表的类
class First {
private int B;
private int C;
private int D;
private int E;
...
}
然后,我有第二个类,它是第一个
的子集class Second {
private int C;
private int D;
}
我想做的是:
List<Second> = List<First>
换句话说,第二个列表是第一个列表的子集。我想做的是一个无需循环或使用“添加”语句的作业。
这可能吗?
TIA
更新 我忘了提到具有更多字段/属性的类是一种“实体”类,其目的是将数据提取/保存到数据库。 Java文件本身是由Hibernate创建的,并且该类的每个字段/属性都与数据库中的字段匹配。具有子类型2类的原因是具有较少数量的字段/属性(即子集)的那个用于REST目的(即来回发送数据)。
答案 0 :(得分:3)
您可以使用继承:
class Second {
int c, d;
public int getC() { return c; }
public int getD() { return d; }
}
class First extends Second {
int a, b;
public int getA() { return a; }
public int getB() { return b; }
}
public static void main(String[] args) {
List<First> firstList = new ArrayList<>();
List<? extends Second> secondList = firstList;
}
答案 1 :(得分:1)
如果您为Second
提供一个带First
参数的构造函数(并将字段显示为Second
或添加可见的getter),例如
class Second {
public Second(First a) {
this.C = a.C;
this.D = a.D;
}
private int C;
private int D;
}
如果您使用的是Java 8+,则可以将List
类型的First
和map
转换为Second
类似
List<First> firsts = new ArrayList<>();
// ...
List<Second> al = firsts.stream().map(Second::new).collect(Collectors.toList());