使用参数来实现多个接口(在泛型之前)。

11 浏览
0 Comments

使用参数来实现多个接口(在泛型之前)。

假设我有以下的接口:

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方法的代码在这里
}

现在,使用泛型,我可以有一个方法如下:

public  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();
}

但是你也可以调用method(new C()),它没有实现I2,所以会出问题。

那么,还有其他的方法可以实现这个吗?

附注:我实际上并不需要这样做,这只是出于好奇而问的。

0