有 Java 编程相关的问题?

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

eclipse中java编译groovy时出现编译时错误

我在做一个项目,我没有开始,但继承了一些东西来维护。代码是java,混合了一些groovy。我正在使用Eclipse。。。我知道如何拼写“groovy”,但仅此而已,但到目前为止还不错。。。 问题是:

使用java 8,Eclipse Oxygen(使用Groovy 2.5.7编译器)可以编译以下代码,看起来编译起来没有问题:

class Bgc<T extends Bgc> {
    protected StartListener sln
    interface StartListener
    {
      void onStarted(T cmd)
    }
    
    T onStarted(StartListener startListener)
    {
      this.sln = startListener 
      (T)this
    }
}

FWIW我们的构建脚本构建这个构造也没有问题。。。但是如果我尝试在Eclipse4.10.0、Java11中构建它。我的eclipse声称拥有groovy的2.5.14编译器和3.0编译器。。。在这个支持Java11的eclipse中,这两种选择都不起作用。。。Eclipse4.10.0只是在“StartListener”接口中给了我一个错误,抱怨onStarted(tcmd)正在引用非静态类型T

我不明白Eclipse/Java 8/groovyc 2.5.7(允许构建)是否只是忽略了。。。(T cmd)或是否使用较新的java/groovyc。如果前面的组合忽略了它,那么我可以(大概)删除“T”


共 (1) 个答案

  1. # 1 楼答案

    内部接口是静态内部类,因此它不能引用其外部类的任何类型参数。只有非静态成员才能引用T