使用参数来实现多个接口(在泛型之前)。
- 论坛
- 使用参数来实现多个接口(在泛型之前)。
11 浏览
使用参数来实现多个接口(在泛型之前)。
假设我有以下的接口:
public interface I1 { void foo(); } public interface I2 { void bar(); }
和以下的类:
public class A extends AParent implements I1, I2 { // foo和bar方法的代码在这里 } public class B extends BParent implements I1, I2 { // foo和bar方法的代码在这里 } public class C extends CParent implements I1 { // foo方法的代码在这里 }
现在,使用泛型,我可以有一个方法如下:
publicvoid 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(); }
但是你也可以调用method(new C())
,它没有实现I2,所以会出问题。
那么,还有其他的方法可以实现这个吗?
附注:我实际上并不需要这样做,这只是出于好奇而问的。