我有以下几组课程:
public abstract class GSObject<T extends GSObject<T>> {
public abstract boolean matches(String toMatch);
//Other functions
public static <T extends GSObject<T>> T findMatch(List<T> objects, String toMatch){
//Code that iterates through the list, seeing if one matches;
}
}
public abstract class Phrase extends GSObject<Phrase> {
//More code
}
public class Request extends Phrase{
@Override
public boolean matches(String toMatch){
//Implementation of matches()
}
}
运行以下命令:Request.findMatch(allRequests,chat);
给出以下错误:
Bound mismatch: The generic method findMatch(List<T>, String) of type GSObject<T> is not applicable for the arguments (List<Request>, String). The inferred type Request is not a valid substitute for the bounded parameter <T extends GSObject<T>>
如果我这样做Phrase.findMatch(allPhrases, chat);
,它不会引发错误,这意味着这与双重继承有关。我是否必须编写另一个与扩展 GSObject 的类一起使用的静态函数?
我已经研究过让 GSObject 成为一个接口,但它有一些我想在类中定义(不是抽象地)的类。
有什么我遗漏的东西(在三个类中的任何一个中),还是我需要创建一个定义函数的接口matches()
(我试图避免什么)?