java - 在eclipse中编译groovy会产生编译时错误
问题描述
我正在进行一个我没有开始但继承了一些要维护的东西的项目。代码是混合了一些 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”。
解决方案
内部接口是静态内部类,因此它不能引用其外部类的任何类型参数。只有非静态成员才能引用 T。
推荐阅读
- c++ - 无法使用子类中定义的虚拟 getter 实现基类
- active-directory - Active Directory 中的哪些字段不仅是唯一的,而且是不可变的 (ADFS)
- java - 带有字符串和整数的评估顺序
- python - 使用字典和数据框通过循环创建具有变量名的新数组
- python - 如何使用 cython 编译 python 并避免 Windows 上的导入限制?
- mongodb - 如何将 mongo 容器暴露在覆盖网络之外?
- github - Github action bot 推送到 gh-pages 导致页面构建失败
- python - 3D 中的 FancyArrowPatch
- tensorflow - 我正在研究多类文本分类,如何将一个热编码传递给 keras 模型以在 ytrainset 中进行训练?
- java - 搜索标题包含关键字的书籍并按标题排序(按字母顺序)返回