4

我刚刚被介绍给特征(Smalltalk 中的“特征”,Perl 中的“角色”)。我想用我熟悉的语言快速试验它们。Java 中是否有任何支持特征的库或扩展?

我听说 AspectJ 和 Qi4J 都支持 mixins,但我也读到 mixins 与特征不同。那么我也可以将这些库之一用于特征吗?

或者 Scala 怎么样,它与 Java 完全向后兼容,对吧?这是否支持特征?

还有其他建议吗?

4

2 回答 2

4

或者 Scala 怎么样,它与 Java 完全向后兼容,对吧?这是否支持特征?

是的,Scala完全支持 Traits。它必须跳过一些奇怪的圈才能使其与 JVM 一起工作,但它就在那里,而且非常强大。

你可以用 Scala 编写你的实验,它会与你现有的 Java 东西互操作(取决于工具)

于 2011-03-07T23:11:04.480 回答
2

Qi4j 2.0(正在开发中)添加了强大的 Scala 支持,我们正在努力使 Scala Traits 可用作 Qi4j 混合和关注点(AOP“围绕建议”等价物)。Scala trait 编译为静态方法,该方法将拥有类的代理实例作为第一个参数(C 中的经典 C++ 表示)。Qi4j 将能够将 Trait 连接为 Mixin(即方法可以在 Composite 的公共接口中公开)并绑定到底层 StateHolder 以供 Trait 使用复合,因此似乎 Trait 将具有状态...

FTR; Qi4j 2.0 还最大限度地减少了类型占用空间,允许使用与 Qi4j 无关的类型比以前更多。

于 2011-09-07T03:17:37.210 回答