gpt4 book ai didi

Java 过滤列表到泛型类型 T

转载 作者:行者123 更新时间:2023-12-02 20:04:11 25 4
gpt4 key购买 nike

我该如何执行以下操作(这无法编译):

<T> List<T> getElementsOf() {
return list.stream()
.filter(x -> x instanceof T)
.map(x -> (T) x)
.collect(toList());
}

使用示例是什么?理想情况下,它应该像 obj.<Derived>getElementsOf() .

最佳答案

虽然另一个答案几乎可以完成这项工作,但这里有一个更好的答案:

<T> List<T> getElementsOf(Class<T> clazz) {
return list.stream()
.filter(clazz::isInstance)
.map(clazz::cast)
.collect(toList());
}

请注意 clazz::isInstance 东西。它不比较两个类,而是使用 isInstance 方法。根据文档,这相当于 instanceof,这正是您首先想要的。

This method is the dynamic equivalent of the Java language instanceof operator.

关于Java 过滤列表到泛型类型 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40989500/

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