所以,想象一下,我有一个父类Feature类。然后是该类的一群孩子,如Dotted,Stripped,Blank,都继承自Feature。
给定List<Feature>
我想得到该列表中Dotted类的所有对象。
仅供参考,我首先使用List<Feature> features
,features.add(New Dotted())
,features.add(New Blank())
等填充features.add(New Blank())
...
我尝试过类似的东西:
public List<Dotted> getAllDotted(List<Feature> features){
List<Dotted> result = features.stream().filter(o -> o.getClass().equals(Dotted.class)).collect(Collectors.toList());
return result;
}
但它不起作用,因为Collector.ToList()不会将filter()
的结果转换为List<Dotted>
答案 0 :(得分:1)
您可以执行以下操作:
List<Dotted> d = f.stream().filter(o -> o instanceof Dotted).map(o -> (Dotted) o).collect(Collectors.toList());
可能不是很干净。