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或其他任何在参数中以及使用该参数的地方都不存在的类/接口的有效类型名称,您应该可以。

10-07 13:25
查看更多