Groovy中的简单泛型类
@CompileStatic
class Foo<T> {
T member
}
@CompileStatic
class DoubleListFoo extends Foo<List<Double>> {
void bar() {
println member.size()
}
}
[ERROR] DoubleListFoo.groovy:[12,9] 3. ERROR in DoubleListFoo.groovy (at line 12)
[ERROR] println member.size()
[ERROR] ^^^^^^^^^^^^^
[ERROR] Groovy:[Static type checking] - Cannot find matching method java.lang.Object#size(). Please check if the declared type is right and if the method exists.
mvn -version
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
Maven home: /usr/local/apache-maven-3.2.3
Java version: 1.7.0_71, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9.5", arch: "x86_64", family: "mac"
Groovy版本:
groovyc -version
Groovy compiler version 2.4.3
Copyright 2003-2013 The Codehaus. http://groovy.codehaus.org/
这是我做的一个简单的测试用例,当一个更复杂的类不能编译时,错误是“不能将类型T的值赋给类型double[]的变量”。
解决了:官方关于Maven集成的Groovy文档称groovy-batch编译器的最新版本是2.3.7。那不是真的,2.4.3是可用的。
我发现的问题被报告为针对2.3.7编译器的bug,该bug在2.3.11和2.4.3中得到了修复。
我有Java8 Groovy 2.4.12和下面的代码编译和运行。 但是如果你注释掉< code>return,编译器会说 此外,如果您注释掉值分配,那么它又可以了。因此,下面的代码编译并运行: 这似乎是一种特殊情况,只有在以下情况下才会发生: 注释 具有两个参数的泛型方法;第一个是泛型类型,第二个是相同泛型类型的接口 调用该泛型方法,第二个参数作为闭包,全部包装在另一个闭包中。 调用前的变量声明
当我从Eclipse构建到maven构建时,我发现了项目中的许多问题。我使用2.5.1编译器插件。 JDK是开放的-JDK-7 我在一个新项目中隔离了这个问题,并对其进行了深入研究。问题是: 这无法使用javaC进行编译(但在Eclipse中工作),并说明以下错误: [错误]无法执行目标组织。阿帕奇。专家插件:maven编译器插件:2.5.1:项目测试时编译(默认编译):编译失败 [错误]/hom
问题内容: 我使用Groovy,JUnit和EasyMock为Java应用程序编写单元测试。在EasyMock中,有几种重载方法已被弃用,其注释为“由于执行更严格的擦除操作,因此无法在Java 7中编译”。这些方法将类型为的对象作为参数。除其他外,存在以下方法: … Java不再允许这样做,但是如果您直接从Java调用该代码,则会调用正确的方法。例如,当您执行此代码时 正确的方法(列表中的最后一个
这是我的Maven命令 对于这个项目 但我面对的是 [错误]没有更多标记-无法分析错误消息:Groovy:无法解析类委托,无法找到用于注释的类[错误]12。D:\Projects\lombok groovy example master\src\main\groovy\prystasj\lombok\example\groovy\Rocket中出错。groovy(第5行)[错误]@数据 mvn—版
问题内容: 除了groovy之外,还有比Java更动态的方法。 为什么这是groovy中的编译时错误(意外令牌): 我该如何编写这种时髦的方式? 问题答案: Groovy解析器不处理以通用信息开头的方法签名。 它解析是否添加public修饰符: 虽然我不相信您会在编译时获得任何用于添加此批注的类型检查
FoodataEntity: