org.nutz.aop
类 AbstractClassAgent

java.lang.Object
  继承者 org.nutz.aop.AbstractClassAgent
所有已实现的接口:
ClassAgent
直接已知子类:
AsmClassAgent

public abstract class AbstractClassAgent
extends java.lang.Object
implements ClassAgent

提供ClassAgent的基础实现,拦截不可能插入Aop代码的Class

传入的Class对象需要满足的条件

  • 不能是final或者abstract的
  • 必须有非private的构造函数

    被拦截的方法需要满足的条件
  • 不能是final或者abstract的
  • 不是private的

    作者:
    wendal(wendal1985@gmail.com)

    嵌套类摘要
    protected static class AbstractClassAgent.Pair
               
    protected static class AbstractClassAgent.Pair2
               
     
    字段摘要
     
    从接口 org.nutz.aop.ClassAgent 继承的字段
    CLASSNAME_SUFFIX
     
    构造方法摘要
    AbstractClassAgent()
               
     
    方法摘要
     ClassAgent addInterceptor(MethodMatcher matcher, MethodInterceptor listener)
              添加拦截器
    protected
    <T> boolean
    checkClass(java.lang.Class<T> klass)
               
    <T> java.lang.Class<T>
    define(ClassDefiner cd, java.lang.Class<T> klass)
              定义一个新的类对象
    protected abstract
    <T> java.lang.Class<T>
    generate(ClassDefiner cd, AbstractClassAgent.Pair2[] pair2s, java.lang.String newName, java.lang.Class<T> klass, java.lang.reflect.Constructor<T>[] constructors)
               
    protected
    <T> java.lang.reflect.Constructor<T>[]
    getEffectiveConstructors(java.lang.Class<T> klass)
               
    protected
    <T> java.lang.Class<T>
    try2Load(java.lang.String newName, ClassDefiner cd)
               
     
    从类 java.lang.Object 继承的方法
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    构造方法详细信息

    AbstractClassAgent

    public AbstractClassAgent()
    方法详细信息

    addInterceptor

    public ClassAgent addInterceptor(MethodMatcher matcher,
                                     MethodInterceptor listener)
    从接口 ClassAgent 复制的描述
    添加拦截器

    指定者:
    接口 ClassAgent 中的 addInterceptor
    参数:
    matcher - 方法匹配器
    listener - 拦截器
    返回:
    添加完成后的ClassAgent

    define

    public <T> java.lang.Class<T> define(ClassDefiner cd,
                                         java.lang.Class<T> klass)
    从接口 ClassAgent 复制的描述
    定义一个新的类对象

    指定者:
    接口 ClassAgent 中的 define
    参数:
    cd - 字节码生成器
    klass - 参照类对象
    返回:
    新的类对象

    generate

    protected abstract <T> java.lang.Class<T> generate(ClassDefiner cd,
                                                       AbstractClassAgent.Pair2[] pair2s,
                                                       java.lang.String newName,
                                                       java.lang.Class<T> klass,
                                                       java.lang.reflect.Constructor<T>[] constructors)

    getEffectiveConstructors

    protected <T> java.lang.reflect.Constructor<T>[] getEffectiveConstructors(java.lang.Class<T> klass)

    checkClass

    protected <T> boolean checkClass(java.lang.Class<T> klass)

    try2Load

    protected <T> java.lang.Class<T> try2Load(java.lang.String newName,
                                              ClassDefiner cd)