0

所以,想象一下我有一个父要素类。然后是那个类的一堆孩子,比如 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>

4

1 回答 1

1

您可以执行以下操作:

List<Dotted> d = f.stream().filter(o -> o instanceof Dotted).map(o -> (Dotted) o).collect(Collectors.toList());

不过可能不是很干净。

于 2015-09-17T14:35:27.527 回答