使用具有特定类型的运算符“==”的切入点

时间:2011-09-29 07:51:50

标签: operators aop aspectj

是否可以编写一个AspectJ切入点,以匹配特定类型的特定运算符的用法?

一些背景信息:我正在开发一个项目,我们必须使用遗留Java库(5.0之前,enum关键字之前),它带有几个“伪枚举”类型,即普通Java定义自己类型的静态常量的类。那些“感觉”非常像枚举,但像枚举一样使用它们会导致错误。因此,我希望AspectJ将==与其中一种类型的对象的使用标记为错误,如果可能的话。我已经搜索了这篇文章并查阅了通常非常有用的书 AspectJ in action ,但到目前为止还没有成功。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

==与equals()不同,由JVM实现,据我所知,不能被aspectj修改。另外,我不认为AspectJ是这项工作的正确工具。

更好的方法是为您的项目实施Checkstyle规则或类似规则,以便您指明这些要点。您可以将它们作为错误或警告。有关详细信息,请参阅Writing Checks for Checkstyle

这需要一些编码,但aspectJ解决方案也是如此。

Checkstyle有一个eclipse插件和一个maven插件,所以当你在IDE中工作时,你可能会出现这些错误。