有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

泛型java模板如何显式指定在已命名的类上使用参数变量?

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


共 (1) 个答案

  1. # 1 楼答案

    为了简洁起见,泛型通常包含类型参数的单个字母,这是因为缺少使用单个字母命名的真正类。将State更改为S或任何其他有效的类型名称,该名称不是参数中现有的类/接口,并且在使用该名称的任何地方都可以,这样就可以了