可以将aspectj添加到java.lang.String中

Fre*_*ind 6 java aspectj

我已经阅读了一些关于aspectj的文章,我知道它可以增强类,这很有吸引力.我有一个非常愚蠢的问题,我找不到一个明确的答案:

Aspectj可以向java.lang.String添加方法吗?

或者类似的问题:如果我无法获得某些类的来源,我可以通过aspectj来增强它们吗?

kri*_*aex 8

我只是在寻找别的东西,偶然发现了这个问题.我想指出,即使被接受,但科瑟的答案有些不正确.问题提到对LTW没有限制,因此CTW仍处于竞争中.可以编织JDK/JRE类文件,然后在稍后的步骤中将建议的类添加到引导类路径.我之前已经完成了(甚至完全是被问到的,即在String中声明一个新方法),它没有问题.


Kow*_*ser 6

不,你不能这样做我的朋友.

我认为这是你正在寻找的类型没有暴露给用户

有关详细信息,请查看AspectJ开发环境指南#Special Cases

正如它所说

无论使用何种aop.xml文件,以下类都不会暴露给LTW基础结构

  • 所有org.aspectj.*类(和子包) - 基础结构本身都需要它们
  • 所有java.*和javax.*类(和子包)
  • 所有sun.reflect.*类 - 因为这些是在发生反射调用时使用的JDK特定类