Groovy java 中的特征 类

Groovy traits in java classes

我正在开发现有的 java 代码库,但已说服团队使用交叉编译,以便可以在 groovy 中完成新开发,同时仍使用旧代码库。两全其美,风险低,收益多等

我有一个问题正在尝试解决,Groovy 的 trait 功能完美地解决了这个问题,但它必须与现有的 java classes 或新的一起使用那些仍然想写在 java.

中的开发人员

在 java 中执行 class duck implements FlyingAbility { 会引发有关实现的错误,而 IntelliJ 的 automatix 修复是在 java class 中实现特征中的所有方法,好像它只是一个界面。

有没有办法让特征在 java classes 中使用特征,就像它们在 groovy classes 中的工作方式一样?

您不能在 Java class 中使用特征。 Groovy traits 被实现为 compile-time 对其应用的 class 的转换,并且 Java classes 不通过 Groovy编译器。

也就是说,it's usually very simple to convert Java code to Groovy 并将 @CompileStatic 添加到 class 通常生成的代码的性能与等效的 Java 大致相同,尽管(目前)大一点的 .class 文件。

如果您只需要使用一个特征,您可以在 Groovy 中创建一个代理 class 即

GroovyTrait.groovy

trait GroovyTrait {
}

GroovyClass.groovy

class GroovyClass implements GroovyTrait {
}

JavaClass.java

class JavaClass extends GroovyClass {
}