どのように私はリストに互換性のない型のオブジェクトをストリームできますか?

ジェニファーローレンス :

私の質問は:人物のリストを考えると、すべての学生を返します。

ここに私のクラスは次のとおりです。

Personクラス

public class Person {
}

Studentクラス

public class Student extends Person {
}

方法

public static List<Student> findStudents(List<Person> list) {


    return list.stream()
            .filter(person -> person instanceof Student)
            .collect(Collectors.toList());
}

私は、コンパイルエラーを取得しています: incompatible types: inference variable T has incompatible bounds

どのように私はこのエラーを取得せずにストリームを使用して、リストからすべての生徒を返します。

アンドリューTobilko:
return list.stream()
           .filter(Student.class::isInstance)
           .map(Student.class::cast)
           .collect(Collectors.toList());

それはまだだ、そうでない場合は、そこにキャストする必要がありますStream<Person>instanceofチェックは任意のキャストを実行しません。

Student.class::isInstanceそしてStudent.class::cast私の単なる好みです、あなたが行くことができるp -> p instanceof Studentし、p -> (Student)pそれぞれ。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=311707&siteId=1