Java中特定类型泛型接口的实现

flo*_*w2k 4 java generics

考虑以下通用接口:

interface Petlover<T>{
    void train(T somePet);
}
Run Code Online (Sandbox Code Playgroud)

我知道可以为通用接口提供通用实现(例如,class MalePetLover<T> implements Petlover<T>)。但我在仅实现特定类型的接口时遇到困难:

class Dogperson implements Petlover<T> {
    int age;

    void train(String someDog){...};
}
Run Code Online (Sandbox Code Playgroud)

编译错误是train(String) in Dogperson cannot implement train(T) in Petlover。处理这个问题的正确方法是什么?

Era*_*ran 6

既然您希望train接受 a String,您的班级应该实现Petlover<String>

class Dogperson implements Petlover<String> {
    int age;

    public void train(String someDog) {...};
}
Run Code Online (Sandbox Code Playgroud)

或者也许train()的方法Dogperson应该接受一个Dog参数,然后该类将实现Petlover<Dog>.