【发布时间】:2021-01-22 23:59:55
【问题描述】:
我有两个接口(@987654321@、IfaceB)和两个实现这些接口的类(C 类、D 类):
interface IfaceA {
void doA();
}
interface IFaceB {
void doB();
}
class C implements IfaceA, IFaceB {
public void doA() {}
public void doB() {}
}
class D implements IfaceA, IFaceB {
public void doA() {}
public void doB() {}
}
我无法更改这些类的签名。
如何创建实现这两个接口的类实例的列表或集合?
我尝试了什么:
public static void main(String[] args) {
List<? extends IfaceA & IFaceB> test_1;
List<? extends IfaceA, IFaceB> test_2;
Class<? extends IfaceA, IFaceB>[] test_3;
}
都是错误的(一个通配符只能有一个边界,而我不确定它是否可以与类型绑定)。
我知道这个可能有用:
Object[] objects = new Object[] {
new C(), new D()
};
for (Object o: objects) {
IfaceA a = (IfaceA) o;
IfaceB b = (IfaceB) o;
a.doA();
b.doB();
}
但这看起来不太对。
【问题讨论】:
标签: java inheritance