gpt4 book ai didi

java - 如何从 super 列表中获取某些类对象列表的子集?

转载 作者:行者123 更新时间:2023-12-01 17:24:55 25 4
gpt4 key购买 nike

我有一个List<Base>包含多个实现的所有对象,例如 FooBar 。我如何提取完整列表的子集来获取例如所有 Foo是吗?

以下内容可以工作,但非常丑陋(重复代码、类型转换等)。

class Base;
class Foo extends Base;
class Bar extends Base;

List<Base> bases;

List<Foo> getFoos() {
List<Foo> foos = new ArrayLista<Foo>();
for (Base base : bases) {
foos.add((Foo) base);
}

return foos;
}

List<Bar> getBars() {
List<Bar> Bars = new ArrayLista<Bar>();
for (Base base : bases) {
Bars.add((Bar) base);
}

return Bars;
}

如何改进?

最佳答案

试试这个,

private <T extends Base> List<T> getSubType(Class<T> type)
{
List<T> list = new ArrayList<T>();
for (Base b : bases)
{
if (b.getClass().isAssignableFrom(type))
{
list.add((T) b);
}
}

return list;
}

关于java - 如何从 super 列表中获取某些类对象列表的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15750371/

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