这是不可能的,至少在 Java 中是不可能的。考虑以下场景:
interface Base<K> {
K get();
}
interface A extends Base<String> {
String get();
}
interface B extends Base<Integer> {
Integer get();
}
interface AB extends A, B {
??
}
当你去尝试实现 AB 时,如果可能的话,get() 方法会返回什么类型。在 Java 中,一个类中的两个方法不能具有相同的名称/参数但返回类型不同......因此,这是禁止的。
如果您确实需要一些类似于 Java 允许的功能,我会建议以下内容:
abstract class C {
A a;
B b;
String aGet() {
return a.get();
}
Integer bGet() {
return b.get();
}
}
或者,保留泛型:
abstract class C<K, T> {
Base<K> a;
Base<T> b;
K getA() {
return a.get();
}
T getB() {
return b.get();
}
}