java - 如何检查类是否有方面添加的方法?

标签 java aspectj inject

假设我有一个简单的类(class):

public class TestClass {
   /*...*/
}

我创建了一个向此类注入(inject)新方法的方面:

public aspect TestAspect {
    public void TestClass.aspectMethod() {
        /*...*/
    }
} 

现在,如何检查 TestClass 是否具有 TestAspect 在运行时添加的方法?

最佳答案

最简单的方法就是简单地反射(reflection)类:

TestClass.class.getDeclaredMethod("aspectMethod")

如果它不存在,将会抛出NoSuchMethodException。或者,如果您有字节,则可以使用字节代码访问者来检查字节代码中存在哪些方法 - 但反射路由不会那么困惑。

关于java - 如何检查类是否有方面添加的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24695029/

相关文章:

java - 指向结构指针的指针作为 JNA 中的参数

osgi - Eclipse Luna : java. lang.NoClassDefFoundError 中出现错误:org/eclipse/osgi/baseadaptor/HookConfigurator

java - 如何使 Spring AspectJ 注释在 Java 6/7 中工作

ruby - 转换这种数据结构哈希的巧妙方法?

c++ - 在 C++ 中使用它在内存中的起始地址编辑字符串

java - Dagger2 无法在注入(inject)类中注入(inject)字段

java - org.hibernate.PropertyAccessException : IllegalArgumentException occurred calling getter of com. dms.model.Group.groupId

java - Apache Commons Exec 为包含空格的参数生成太多引号?

java - Thymeleaf 中的嵌套循环绑定(bind)

java - AspectJ 用于记录代码执行顺序