Groovy特性是否支持使用Java进行联合编译?
我对Groovy中的特性感到非常兴奋,但我无法通过联合编译让它们工作.例:
Bird.groovy: trait FlyingAbility { String fly() { "I'm flying!" } } class Bird implements FlyingAbility {} JavaClass.java: public class JavaClass { public static void main(String[] args) { Bird b = new Bird(); // FlyingAbility f = new Bird(); } } 生成的存根是: public class Bird extends java.lang.Object implements FlyingAbility { ; public groovy.lang.MetaClass getMetaClass() { return (groovy.lang.MetaClass)null;} public void setMetaClass(groovy.lang.MetaClass mc) { } public java.lang.Object invokeMethod(java.lang.String method,java.lang.Object arguments) { return null;} public java.lang.Object getProperty(java.lang.String property) { return null;} public void setProperty(java.lang.String property,java.lang.Object value) { } } 这导致java编译器抱怨FlyingAbility未定义(并且不是接口).我发现很难相信这不受支持:我错过了什么吗? 解决方法
您尚未指出您正在使用哪个版本的Groovy,并且某些时候可能存在错误,但您的问题的答案是它受支持. 请参阅https://github.com/jeffbrown/traitandjava的项目.相关文件是: https://github.com/jeffbrown/traitandjava/blob/master/src/main/groovy/demo/FlyingAbility.groovy https://github.com/jeffbrown/traitandjava/blob/master/src/main/groovy/demo/Bird.groovy https://github.com/jeffbrown/traitandjava/blob/master/src/main/groovy/demo/BirdKeeper.java https://github.com/jeffbrown/traitandjava/blob/master/src/test/groovy/demo/BirdKeeperSpec.groovy 该项目使用的是Groovy 2.4.4,一切正常. 我希望有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |