2017-10-06 20 views
2

が子クラスBである次のコードを記述しようとしています。そして、getValueメソッドは、Bではなく、Cでのみ利用可能です。しかし、Eclipseはこの文でエラーを示している。子クラスオブジェクトへの任意キャスト型キャスト

Optional.ofNullable(A).map(A::getB).map(C::getValue); 

それは通常の場合であれば、私たちはキャストを入力して((C)a.getB()).getValue()のように記述します。 Optionalの点でどうすればいいですか?

答えて

6

チェーンにmap(C.class::cast)を追加できます。

Optional.ofNullable(aOrNull).map(A::getB).map(C.class::cast).map(C::getValue); 

マップのチェーンの一部を組み合わせることもできます。

getB()がnullを返すことはありません場合は、あなただけかもしれない:

Optional.ofNullable(aOrNull).map(a -> ((C) a.getB()).getValue()); 

OptionalgetB()場合はnullを返しのヌル回避動作を維持するには、あなたが持っている可能性があり:

Optional.ofNullable(aOrNull).map(A::getB).map(b -> ((C) b).getValue()); 
+0

を私がしなければなりませんでした地図を作る(C.class :: cast) – Sandeep

関連する問題