我需要在一个类中定义一个变量,它是类“ClassA”的实例,同时也实现了接口“InterfaceI”。
显然,这两个方面都可以很容易地实现:
但是我该如何强制让对象既继承ClassA又实现InterfaceB呢?类似于以下代码:
显然,这两个方面都可以很容易地实现:
private ClassA mVariable;
private InterfaceI mVaraible;
但是我该如何强制让对象既继承ClassA又实现InterfaceB呢?类似于以下代码:
private <? extends ClassA & InterfaceI> mVaraible;
我需要的是这个,但我不知道语法是否正确或者是否可行。同时我还需要一个get和set方法,但这可以使用通用类型(我想?)实现。
显而易见的解决方案是
public class ClassB extends ClassA implements InterfaceI{
//whatever here
}
然而,InterfaceI和ClassA都是外部库的一部分。该库有些类扩展了ClassA和InterfaceI,但我无法编辑它们以使其扩展ClassB,因此这个解决方案行不通。
if (x instanceof ...)
。 - Jon Skeet