Java 可选映射类型转换到子类对象

Java 可选映射类型转换到子类对象,java,java-8,optional,Java,Java 8,Optional,我试图编写以下代码,其中C是B的子类。和getValue方法仅在C中可用,而在B中不可用。但是Eclipse在这条语句中显示了一个错误: Optional.ofNullable(A).map(A::getB).map(C::getValue); 如果是正常情况,我们将键入cast并像((C)a.getB()).getValue()那样编写。如何用可选的编写相同的代码 您可以将映射(C.class::cast)添加到您的链中 Optional.ofNullable(aOrNull).map(A:

我试图编写以下代码,其中
C
B
的子类。和getValue方法仅在
C
中可用,而在
B
中不可用。但是Eclipse在这条语句中显示了一个错误:

Optional.ofNullable(A).map(A::getB).map(C::getValue);
如果是正常情况,我们将键入cast并像
((C)a.getB()).getValue()
那样编写。如何用
可选的
编写相同的代码

您可以将
映射(C.class::cast)
添加到您的链中

Optional.ofNullable(aOrNull).map(A::getB).map(C.class::cast).map(C::getValue);
您还可以组合一些地图链

如果
getB()

Optional.ofNullable(aOrNull).map(a -> ((C) a.getB()).getValue());
如果
getB()
返回null,则要保留
可选
的null避免行为,您可以:

Optional.ofNullable(aOrNull).map(A::getB).map(b -> ((C) b).getValue());
我必须做map(C.class::cast)