在Java中提供特性的库或语言扩展?

4

我刚接触到特质(Smalltalk中的“traits”,Perl中的“roles”)。我想在我熟悉的语言中快速尝试一下。Java中有没有支持特质的库或扩展?

听说AspectJ和Qi4J都支持混入(mixins),但我也读到过混入与特质不同。那么我可以使用这些库之一来处理特质吗?

还有Scala,它完全向后兼容Java,对吧?它支持特质吗?

还有其他建议吗?

2个回答

4

或者说Scala,它完全向后兼容Java,对吗?那它支持特质吗?

是的,Scala有完全支持特质。它必须通过一些奇怪的方式来使其与JVM配合使用,但它确实存在,并且非常强大。

您可以使用Scala编写实验,并且它将与您现有的Java工具进行互操作(取决于工具)


2
Qi4j 2.0(正在开发中)增加了强大的Scala支持,并且我们正在努力使Scala Traits作为Qi4j mixins和concerns有用(AOP“around advice”等价物)。Scala Trait编译成静态方法,将拥有类的代理实例作为第一个参数(在C中经典的C ++表示法)。Qi4j将能够将Trait作为Mixin连接起来(即可以在Composite的公共接口中公开方法),并绑定底层StateHolder以供Trait使用,因此似乎Trait将具有状态...
FTR; Qi4j 2.0还最小化了类型占用空间,使得Qi4j-不可知类型比以前更容易使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接