public abstract class InterruptableEvaluator<State> {
public abstract evaluate(State state);
public abstract haltEvaluation();
private final class EvaluationThread extends Thread {
private State state;
public EvaluationThread(State state) {
this.state = state;
}
@Override
public void run() {
evaluate(state);
haltEvaluation();
}
}
}
问题出在这里:
@Override
public void run() {
evaluate(state);
haltEvaluation();
}
对象
state
被视为java.lang.Thread.State
对象,而不是使用InterruptableEvaluator
中的参数。如何明确告诉Java使用参数变量而不是
java.lang.Thread.State
? 最佳答案
为了简洁起见,泛型通常包含单个字母作为类型参数,并且由于缺少用单个字母命名的真实类。将State
更改为S
或其他任何在参数中以及使用该参数的地方都不存在的类/接口的有效类型名称,您应该可以。