Java 知识 - 接口代理

2022/6/26 1:20:17

本文主要是介绍Java 知识 - 接口代理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

介绍

模仿 Mybatis 的接口代理,自己模仿写一下。

接口

public interface MyInterface {
  public List<String> getString(String a, String b);
}

代理(未做到通用)

public class MyProxy<T> implements InvocationHandler {
  @Override
  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    ArrayList list = new ArrayList();
    list.add(args[0]);
    list.add(args[1]);
    return list;
  }
}

代理工厂

public class ProxyFactory {
  public <T> T getProxyInstance(MyProxy<T> myProxy, Class<T> target){
    ClassLoader classLoader = myProxy.getClass().getClassLoader();
    return (T)Proxy.newProxyInstance(classLoader,  new Class[] { target }, myProxy);
  }
}

测试

public class Mytest {
  public static void main(String[] args) {
    ProxyFactory proxyFactory = new ProxyFactory();
    MyInterface myInterface = proxyFactory.getProxyInstance(new MyProxy<MyInterface>(), MyInterface.class);
    List<String> string = myInterface.getString("fei", "gege");
    System.out.println(string.toString());
  }
}

结果:[fei, gege]



这篇关于Java 知识 - 接口代理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程