我刚刚介绍了特征(Smalltalk中的“特征”,Perl中的“角色”)。我想用我熟悉的语言快速试验它们。 Java中是否有支持特征的库或扩展?
我听说AspectJ和Qi4J都支持mixins,但我也读到mixins与traits不同。那么我还可以使用其中一个库来获取特征吗?
或者Scala,它与Java完全向后兼容,对吧?这是否支持特质?
还有其他建议吗?
答案 0 :(得分:4)
或者Scala,它与Java完全向后兼容,对吧?这是否支持特质?
是的,Scala有full support for Traits。它必须通过一些奇怪的箍来使它与JVM一起工作,但它就在那里,并且非常强大。
您可以在Scala中编写实验,它将与您现有的Java内容(依赖于工具)互操作
答案 1 :(得分:2)
Qi4j 2.0(正在开发中)增加了强大的Scala支持,我们正在努力使Scala Traits成为Qi4j mixins和关注点(AOP“around advice”等价物)。 Scala特性编译为静态方法,该方法将拥有类的代理实例作为第一个参数(C中的经典C ++表示)。 Qi4j将能够将Trait连接为Mixin(即方法可以在Composite的公共接口中公开)并绑定在底层StateHolder中以供Trait使用的复合,因此似乎特征将具有状态...
FTR; Qi4j 2.0也最大限度地减少了类型占用空间,使Qi4j不可知类型的使用比以前更多。