Scala - 将行为更改/添加到静态方法

时间:2014-07-09 00:47:13

标签: scala static-methods

是否可以更改/添加静态方法的行为?我的意思是像AspectJ那样添加/改变行为(之前,之后......)。我一直在使用Scala's Stackable Trait Pattern来改变类似于AspectJ的类和特征的方法行为(但我没有使用它或者打算使用AspectJ,只是想模仿相同的功能)但这对于对象不起作用并且,因此,对于静态方法也不)。你知道一种让这项工作的方法吗?在此先感谢任何帮助/建议。如果您需要一个示例或其他内容,请告诉我。

1 个答案:

答案 0 :(得分:-1)

Scala实际上没有静态方法。编译器将创建静态方法,但这些方法不是可见的语言功能。对于object,Scala为Java互操作创建静态方法,他们所做的只是在单例实例上调用相应的方法。对于具有特定方法的特征,Scala将这些方法编译为静态方法,这些方法是从扩展特征的每个类中创建的实例方法调用的。

为了在object上使用AspectJ,您必须为其指定该对象的类名。这将是它在Scala中的任何名称,但附加$,例如List$List的配套对象的类名。要将AspectJ与特征一起使用,请将$class附加到特征名称以获取特征静态方法所在的类。