【发布时间】:2021-05-29 14:47:31
【问题描述】:
我正在进行一个我没有开始但继承了一些要维护的东西的项目。代码是混合了一些 groovy 的 java。我正在使用 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 我们的构建脚本构建这个结构也没有问题......但是如果我尝试在 Eclipse 4.10.0、java 11 中构建它。我的 Eclipse 声称有 2.5.14 编译器和 3.0 编译器用于 groovy。 .. 在这个支持 java 11 的 eclipse 中,这两种选择都不起作用...... Eclipse 4.10.0 只是在“StartListener”界面中给了我一个错误,抱怨 onStarted(T cmd) 正在引用非静态类型 T。
我不明白 Eclipse Oxygen/Java 8/groovyc 2.5.7(允许构建)是否只是忽略了 ...(T cmd)中的“T”,或者是否是较新的 java/groovyc .如果前面的组合忽略了它,那么我可以(大概)删除“T”。
【问题讨论】: