小编Joh*_*sen的帖子

Java编译器拒绝使用参数化内部类的变量声明

我有一些Groovy代码在Groovy字节码编译器中工作正常,但由它生成的Java存根导致Java编译器出错.我认为这可能是Groovy存根生成器中的另一个错误,但我真的无法弄清楚为什么Java编译器不喜欢生成的代码.

这是生成的Java类的截断版本(请原谅丑陋的格式化):

@groovy.util.logging.Log4j() public abstract class AbstractProcessingQueue
<T>  extends nz.ac.auckland.digitizer.AbstractAgent  implements
    groovy.lang.GroovyObject {
        protected int retryFrequency;
        protected java.util.Queue<nz.ac.auckland.digitizer.AbstractProcessingQueue.ProcessingQueueMember<T>> items;
        public AbstractProcessingQueue
        (int processFrequency, int timeout, int retryFrequency) {
             super ((int)0, (int)0);
    }

    private enum ProcessState
      implements
    groovy.lang.GroovyObject {
        NEW, FAILED, FINISHED;
    }

    private class ProcessingQueueMember<E>  extends java.lang.Object  implements
    groovy.lang.GroovyObject {
        public ProcessingQueueMember
        (E object) {}
    }
}
Run Code Online (Sandbox Code Playgroud)

生成的代码中的违规行是这样的:

protected java.util.Queue<nz.ac.auckland.digitizer.AbstractProcessingQueue.ProcessingQueueMember<T>> items;
Run Code Online (Sandbox Code Playgroud)

这会产生以下编译错误:

[ERROR] C:\Documents and Settings\Administrator\digitizer\target\generated-sources\groovy-stubs\main\nz\ac\auckland\digitizer\AbstractProcessingQueue.java:[14,96] error: improperly formed type, type arguments given on a raw type
Run Code Online (Sandbox Code Playgroud)

编译错误中的列索引96指向类型的<T>参数化 …

java generics groovy inner-classes

4
推荐指数
1
解决办法
2227
查看次数

标签 统计

generics ×1

groovy ×1

inner-classes ×1

java ×1