我该怎么做(不编译):
<T> List<T> getElementsOf() {
return list.stream()
.filter(x -> x instanceof T)
.map(x -> (T) x)
.collect(toList());
}
Run Code Online (Sandbox Code Playgroud)
什么是用法的例子?理想情况下,应该是这样的obj.<Derived>getElementsOf().
Swe*_*per 13
虽然另一个答案几乎完成了这项工作,但这里有一个更好的答案:
<T> List<T> getElementsOf(Class<T> clazz) {
return list.stream()
.filter(clazz::isInstance)
.map(clazz::cast)
.collect(toList());
}
Run Code Online (Sandbox Code Playgroud)
请注意,clazz::isInstance东西.它不是比较两个类,而是使用该isInstance方法.根据文档,这相当于instanceof,这是你想要的第一个.
此方法是Java语言instanceof运算符的动态等效项.
| 归档时间: |
|
| 查看次数: |
2497 次 |
| 最近记录: |