【发布时间】:2015-07-04 08:38:23
【问题描述】:
在 Java
class A {}
class B extends A {}
interface Sup { A a(); /* returns A instance, or null */ }
interface Sub extends Sup { B a(); }
在 Java 8 中,如果我想让我的 API“更安全”,我应该返回 Optional<A> 而不是“原始”A:
interface Sup { Optional<A> a(); }
interface Sub extends Sup { Optional<B> a(); }
但不编译!因为Optional<B> 不是Optional<A> 的子类。
我应该如何解决这个问题?
【问题讨论】: