美文网首页
2018-02-25 java对类的方法加强(三)

2018-02-25 java对类的方法加强(三)

作者: 紫杉叶子 | 来源:发表于2018-02-26 12:24 被阅读0次

    动态代理

    @Test
        public void test3() {
            
            //产生一个猫的代理
            ICat cat = new Cat();
            
            //interfaces ---- 要的是真实哪个类的代理对象
            ICat proxyCat = (ICat) Proxy.newProxyInstance(MethodEnhancement.class.getClassLoader(), cat.getClass().getInterfaces(),new InvocationHandler() {
                
                
                //proxy ---- 代理对象
                //method ---- 把要去加强的方法当做一个对象传递进来了
                //args ---- 方法里的参数,封装到一个object数组对象传进来了
                @Override
                public Object invoke(Object proxy, Method method, Object[] args) 
                        throws Throwable {
                    if(method.getName().equals("run")) {
                        
                        //说明调用的是run方法
                        System.out.println("我家的小猫真是猫中的战斗机");
                        
                        //调用原有的逻辑
                        return method.invoke(cat, args);
                    }
                    
                    //其他方法正常执行
                    return method.invoke(cat, args);
                }
            });
            
            //proxyCat代理猫
            
            //当调用了代理对象的任何方法,都会执行invoke方法里的逻辑
            proxyCat.run();
            //proxyCat.hashCode();
            
        }
        
    

    相关文章

      网友评论

          本文标题:2018-02-25 java对类的方法加强(三)

          本文链接:https://www.haomeiwen.com/subject/njrdxftx.html