gpt4 book ai didi

java - 从 arraylist 中提取子类的所有实例

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:49 24 4
gpt4 key购买 nike

我有 ArrayList<Unit> units .我想编写一个函数,该函数将返回指定子类的所有对象,用作参数。但是我无法让它工作。这是我所拥有的:

public static ArrayList<? extends Unit> getTheseUnits(Class<? extends Unit> specific_unit) {
ArrayList<specific_unit> res = new ArrayList<>(); //'specific_unit' is in red here. Adding '.class' or '.getClass()' after it does not resolve anything
for (Unit u : units){
if (u instanceof specific_unit){
res.add(u);
}
}
return res;
}

最佳答案

按类别过滤:

public static List<Unit> getUnitsByClass(Class<? extends Unit> specificClass, List<? extends Unit> units) {
return units.stream()
.filter(e -> e.getClass().equals(specificClass))
.collect(Collectors.toList());
}

如果你想让这个方法参数化,使用另一个选项:

public static <T extends Unit> List<T> getUnitsByClass(Class<T> specificClass, List<? extends Unit> units) {
return (List<T>) units.stream()
.filter(e -> e.getClass().equals(specificClass))
.collect(Collectors.toList());
}

但在第二种方法中,您将收到未经检查的强制转换警告。

关于java - 从 arraylist 中提取子类的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30189476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com