通用论证

jar*_*sik 0 java polymorphism interface

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

interface A{};

interface B{
  void method(A a);
}
Run Code Online (Sandbox Code Playgroud)

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

这甚至可能吗?

Nic*_*ckJ 5

你已经做到了!

要证明这一点,尝试这样的事情:

public class ThisA implements A {}
public class ThatA implements A {}
public class OtherA implements A {}
public class SubclassA extends OtherA {}
Run Code Online (Sandbox Code Playgroud)

然后调用你的方法:

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());
Run Code Online (Sandbox Code Playgroud)