我已经阅读了一些关于AspectJ的文章,我知道它可以增强类,这很吸引人。但我有一个非常愚蠢的问题,找不到明确的答案:
AspectJ能够给java.lang.String添加方法吗?
或者类似的问题:如果我无法获取某些类的源代码,我能否通过AspectJ来增强它们?
我本来在查找其他内容时偶然发现了这个问题。我想指出,即使Kowser的答案已经被接受,但有些不正确。问题中没有限制使用LTW,所以CTW仍然可以使用。可以编织JDK/JRE类文件,然后在稍后的步骤中将建议的类添加到启动类路径的前面。我以前就这样做过(甚至实现了问题中所要求的,即在String中声明一个新方法),而且它可以顺利工作。
很抱歉,我的朋友,你不能这样做。
我认为这就是你要找的用户无法访问的类型。
如需更多详细信息,请参阅AspectJ开发环境指南#特殊情况。
正如它所说:
以下类不会暴露给LTW基础架构,无论使用哪个aop.xml文件