考虑以下通用接口:
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。处理这个问题的正确方法是什么?
既然您希望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>.