Client客户端调用

import java.lang.reflect.Method;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.NoOp;
import net.sf.cglib.proxy.CallbackFilter;

public class MultiCallBack
{
   
    /**
     * CallbackFilter过滤不需要的代理对象
     *
     * @param args [参数说明]
     *
     * @return void [返回类型说明]
     * @exception throws [违例类型] [违例说明]
     * @see [类、类#方法、类#成员]
     */
    public static void main(String[] args)
    {
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(Monkey.class);
        enhancer.setCallbacks(new Callback[] {new MyMethodInterceptor(), NoOp.INSTANCE});
        enhancer.setCallbackFilter(new CallbackFilter()
        {
        /**
         * 通过方法名判断是否需要代理
         */      
            public int accept(Method arg0)
            {
                // 方法getType使用回调组中的第二个回调器
                if (arg0.getName().equals("getType"))
                    return 1;
                else
                    return 0;
            } 
        });
        Monkey monkey = (Monkey)enhancer.create();
        monkey.getType();
        monkey.eat();
        monkey.getClass();
        monkey.show();
        monkey.speak("火星语");
       // monkey.speak2("英语");
    }
   
}

你可能感兴趣的:(.net)