![](/img/trans.png)
[英]Is there a simple way to create a list of subclass objects from a list of the superclass objects?
[英]Create objects from a list of IDs in a simple way
有沒有辦法用 stream 或其他東西簡化以下內容?
final List<Fruit> fruits = new ArrayList<>(fruitIds.size());
for (final long id : fruitIds) {
final var fruit = new Fruit();
fruit.setId(id);
fruits.add(fruit);
}
非常感謝你提前
使用構造函數是最佳的。 這假定一個 int id。
class Fruit {
int id;
public Fruit(int id) {
this.id = id;
}
public void setId(int id) {
this.id = id;
}
}
for (Fruit id : fruitIds) {
Fruits.add(new Fruit(id));
}
但是如果你不允許修改你的Fruit class
創建另一個 class 作為工廠 class 會起作用。 我再次假設id
是一個int
。
List<Fruit> fruits = new ArrayList<>(fruitIds.size());
for (final var id : fruitIds) {
fruits.add(FruitFactory.instance(id));
}
class FruitFactory {
public static Fruit instance(int id) {
Fruit fruit = new Fruit();
fruit.setId(id);
return fruit;
}
}
如果您只是在代碼中的一個地方創建 Fruit 的實例,那么上面的內容將沒什么用處。 在那種情況下,我只會堅持你所擁有的。
使用以上內容,stream 解決方案將是
List<Fruit> fruits =
fruitIds.stream().map(FruitFactory::instance).toList();
和一個構造函數
List<Fruit> fruits = fruitIds.stream().map(Fruit::new).toList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.