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)