定義一個接口】
package com.jgc.proxy;
import java.util.List;
public interface jgc {
public List<Object> dojgc(Object object);
}繼承InvocationHandler實現invoke方法
package com.jgc.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class proxyjgc implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] arg2)
throws Throwable {
System.out.println("接口全名:"+proxy.getClass().getName()+">>>>>>>>>>>>>"+"接口方法名"+method.getName());
List<Object> list=new ArrayList<Object>();
list.add("哈哈,你已經實現了動態代理");
list.add("恭喜哦。請吃飯");
return list;
}
}
3.創建一個類用getmapper方法創建代理實例並強轉
package com.jgc.proxy;
import java.lang.reflect.Proxy;
import com.imooc.test.MapperProxy;
public class sqlsession {
@SuppressWarnings("unchecked")
public <T> T getMapper(Class<T> type){
return (T) Proxy.newProxyInstance(type.getClassLoader(), new Class[]{type}, new proxyjgc());
}
}
4.用main跑通整個過程
package com.jgc.proxy;
import java.util.List;
public class jgcMain {
public static void main(String[] args) {
sqlsession sqlsession=new sqlsession();
jgc jc=sqlsession.getMapper(jgc.class);
List<Object> list=jc.dojgc(new Object());
for(Object l:list){
System.out.println(l);
}
System.out.println(list.size());
}
}
5.運行結果
接口全名:com.sun.proxy.$Proxy0>>>>>>>>>>>>>接口方法名dojgc
哈哈,你已經實現了動態代理
恭喜哦。請吃飯
2