加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy特性是否支持使用Java进行联合编译?

发布时间:2020-12-14 16:21:38 所属栏目:大数据 来源:网络整理
导读:我对Groovy中的特性感到非常兴奋,但我无法通过联合编译让它们工作.例: Bird.groovy: trait FlyingAbility { String fly() { "I'm flying!" }}class Bird implements FlyingAbility {} JavaClass.java: public class JavaClass { public static void main(
我对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未定义(并且不是接口).我发现很难相信这不受支持:我错过了什么吗?

解决方法

I find it hard to believe this is not supported: am I missing
something?

您尚未指出您正在使用哪个版本的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,一切正常.

我希望有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读