期望具有多重继承的参数的Java方法

McT*_*fik 3 java syntax multiple-inheritance

我不知道为什么我在网上找不到这个答案.

我有实现多个方法的类,我想编写方法来期望它们.我不知道怎么做,或者甚至可能.

例如:

public void yellAtPet(<? extends Pet implements YellableAt> arg) {
    arg.yellAt("Don't go there!"); 
    arg.pet("Good Boy");
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*ams 7

Extends用于接口和父类.

如果你想强制实现多个扩展,你需要这样的东西:

<T extends ClassA & InterfaceB>
Run Code Online (Sandbox Code Playgroud)

要在方法上强制执行此操作,请对类进行泛化:

public class MyClass<T extends something & somethingelse>{
    public void doSomething(T arg)
    {
         //call methods defined by either interface
    }
}
Run Code Online (Sandbox Code Playgroud)


Ted*_*opp 5

这应该可以作为通用方法正常工作,而不会使您的整个类通用:

public <T extends Pet & YellableAt> void yellAtPet(T arg) {
    arg.yellAt("Don't go there!"); 
    arg.pet("Good Boy");
}
Run Code Online (Sandbox Code Playgroud)