zoukankan      html  css  js  c++  java
  • java动态代理--代理接口无实现类

    转载:https://blog.csdn.net/weixin_45674354/article/details/103246715

    1.接口定义:

    package cn.proxy;
     
    public interface IHello {
        String say(String aa);
    }

    2.代理实现

    package cn.proxy;
     
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
     
    /**
     *  JDK动态代理代理类 
     *
     */
    @SuppressWarnings("unchecked")
    public class FacadeProxy implements InvocationHandler {  
        @Override  
        public Object invoke(Object proxy, Method method, Object[] args)  
                throws Throwable {  
            System.out.println("接口方法调用开始");  
            //执行方法  
            System.out.println("method toGenericString:"+method.toGenericString());
            System.out.println("method name:"+method.getName());
            System.out.println("method args:"+(String)args[0]);
            System.out.println("接口方法调用结束");  
            return "调用返回值";  
        }  
        
        public static <T> T newMapperProxy(Class<T> mapperInterface) {
            ClassLoader classLoader = mapperInterface.getClassLoader();
            Class<?>[] interfaces = new Class[]{mapperInterface};
            FacadeProxy proxy = new FacadeProxy();
            return (T) Proxy.newProxyInstance(classLoader, interfaces, proxy);
          }

    3.运行

    package cn.proxy;
     
    public class Test {
        public static void main(String[] args) {
            IHello hello = FacadeProxy.newMapperProxy(IHello.class);
            System.out.println(hello.say("hello world"));
        }
    }

    4.运行结果

    接口方法调用开始
    method toGenericString:public abstract java.lang.String cn.proxy.IHello.say(java.lang.String)
    method name:say
    method args:hello world
    接口方法调用结束
    调用返回值
  • 相关阅读:
    平衡二叉树
    2020年度总结
    go中string是如何实现的呢
    escape的编码解码
    小程序实现下载图片到手机及文字到手机粘贴板
    小程序分享(单页面,朋友圈)
    sql server单行拆分成多行
    sql server 查询分组后用逗号拼接字符串和拆分
    安装虚拟机
    Lombok插件安装
  • 原文地址:https://www.cnblogs.com/pecool/p/13762449.html
Copyright © 2011-2022 走看看