我刚刚被介绍给特征(Smalltalk 中的“特征”,Perl 中的“角色”)。我想用我熟悉的语言快速试验它们。Java 中是否有任何支持特征的库或扩展?
我听说 AspectJ 和 Qi4J 都支持 mixins,但我也读到 mixins 与特征不同。那么我也可以将这些库之一用于特征吗?
或者 Scala 怎么样,它与 Java 完全向后兼容,对吧?这是否支持特征?
还有其他建议吗?
或者 Scala 怎么样,它与 Java 完全向后兼容,对吧?这是否支持特征?
是的,Scala完全支持 Traits。它必须跳过一些奇怪的圈才能使其与 JVM 一起工作,但它就在那里,而且非常强大。
你可以用 Scala 编写你的实验,它会与你现有的 Java 东西互操作(取决于工具)
Qi4j 2.0(正在开发中)添加了强大的 Scala 支持,我们正在努力使 Scala Traits 可用作 Qi4j 混合和关注点(AOP“围绕建议”等价物)。Scala trait 编译为静态方法,该方法将拥有类的代理实例作为第一个参数(C 中的经典 C++ 表示)。Qi4j 将能够将 Trait 连接为 Mixin(即方法可以在 Composite 的公共接口中公开)并绑定到底层 StateHolder 以供 Trait 使用复合,因此似乎 Trait 将具有状态...
FTR; Qi4j 2.0 还最大限度地减少了类型占用空间,允许使用与 Qi4j 无关的类型比以前更多。