mybatis 动态实现接口的技术
简单易懂的代码永远是学习的最快入门 下面代码中接口interface test 是没有实现的,通过jdk提供的api proxy.newProxyInstance(接口的类加载器,接口的字节码对象,实现的对象)
实现的对象
实现的对象是通过InvocationHandler的接口实现的这个接口通过内部类实现,通过InvocationHandler这个类实现的接口,对会被InvocationHandler这个类中的invoke这个方法捕获,只要这里面实现功能即可,每个参数的内容可以通过对象类型了解
这些方法可以实现mybatis的接口实现,
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class deam {
public interface test{
public String name();
}
public static void main(String[] args) {
//通过代理创建对象
test t = (test) Proxy.newProxyInstance(test.class.getClassLoader(), new Class[]{test.class}, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return "测试";
}
});
//通过接口调用对象
System.out.println(t.name());
}
}