使用实现多个接口预泛型的参数
假设我有这些接口:
public interface I1 {
void foo();
}
public interface I2 {
void bar();
}
和类:
public class A extends AParent implements I1, I2 {
// code for foo and bar methods here
}
public class B extends BParent implements I1, I2 {
// code for foo and bar methods here
}
public class C extends CParent implements I1 {
// code for foo method here
}
现在,使用泛型,我可以有一个这样的方法:
public <T extends I1 & I2> void method(T param) {
param.foo();
param.bar();
}
我可以用A和B作为参数来调用它,但不能用C调用它(它不实现I2)。
有没有办法实现这种类型的类型安全预泛型(java <1.5)。
考虑到A,B和C具有不同的继承树,并且实际上不是一种选择,例如AParent和BParent自己有一个共同的父母。
我知道你可以做到:
public void method(I1 param) {
param.foo();
((I2)param).bar();
}
但是你也可以调用它不实现I2,所以你会遇到麻烦。method(new C())
那么,还有其他方法可以做到这一点吗?
P.S. :我真的不需要这样做,我问这主要是出于好奇。