通用论证

时间:2015-03-09 12:27:26

标签: java interface polymorphism

我想创建一个Java接口,其方法接受一个类型的所有子类型:

interface A{};

interface B{
  void method(A a);
}

我想要实现的是使方法(A a)的实现接受 A的所有子类型(如返回类型多态,但带有参数)。

这甚至可能吗?

1 个答案:

答案 0 :(得分:5)

你已经完成了!

要证明这一点,请尝试以下方法:

public class ThisA implements A {}
public class ThatA implements A {}
public class OtherA implements A {}
public class SubclassA extends OtherA {}

然后调用你的方法:

B b = new B {
  public void method(A a) {
    System.out.println("Called with "+a);
  }
}

b.method(new ThisA());
b.method(new ThatA());
b.method(new OtherA());
b.method(new SubclassA());