これを Java ではなく C# で実行する方法しか見つからないようです。
を持っていますが、そのリスト内のすべての要素が実際にはCalledList<TypeX>
のサブクラスであることを知っています。TypeX
TypeY
List<TypeX>
を受け入れて返すラムダ式をどのように記述すればよいでしょうかList<TypeY>
?
ベストアンサー1
この例では、次のクラスを使用します。
class TypeX {}
class TypeY extends TypeX {}
次に、次のものを用意しますList<TypeX>
。
final List<TypeX> xList = ...
必要なのは、次のメソッド参照を使用するだけですTypeY.class.cast
。
final List<TypeY> yList = xList.stream()
.map(TypeY.class::cast)
.collect(toList());
filter()
エラーの原因となる項目を除外することもできます。
final List<TypeY> yList = xList.stream()
.filter(TypeY.class::isInstance)
.map(TypeY.class::cast)
.collect(toList());
使用例:
import static java.util.stream.Collectors.toList;