Ijava中的反射需要一个实例,但是接口无法提供这样的实例,但是JDK提供了一个叫做动态代理的东西,这个代理恰恰只能代理接口。所以我们想要反射接口需要使用这个动态代理来做。
在java的动态代理机制中,有两个重要的东西,一个是 InvocationHandler(接口)、另一个则是 Proxy(类),这是我们动态代理必须用到的两个东西。
首先创建一个接口(以studentMapper为例,其中提供了一个根据ID获取student对象的方法):
public interface StudentMapper{
/**
* 根据id查对象
*/
Student selectById(@Param("id") Integer id);
}
现在如果我们需要反射使用该接口根据学生ID获取学生对象是无法直接反射调取的,所以我们需要一个动态代理类,下面创建一个MyInvocationHandler,需要实现上面说的InvocationHandler接口:
public class MyInvocationHandler implements InvocationHandler {
private Object target;
public MyInvocationHandler(Object target) {
this.target = target;
}
@Override
public Object