转载java动态代理实例
1、创建接口:
package cn.com.gan.Proxy;public interface Person {String getName();String getGender();void setName(String name);void setGender(String gender);void setRate(int rate);int getRate();}package cn.com.gan.Proxy;public class Chinese implements Person {String name;String gender;String interests;int rate;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getInterests() {return interests;}@Overridepublic int getRate() {return rate;}@Overridepublic void setRate(int rate) {this.rate=rate;}}package cn.com.gan.Proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class ChineseHander implements InvocationHandler {Object object=null;public ChineseHander(Object object){this.object=object;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {Object result=null;if(!method.getName().equals("setRate"))result=method.invoke(object, args);elseSystem.out.println("不能够设置setRate");return result;}private void doAfter() {System.out.println("do before hello");}private void doBefore() {System.out.println("do after hello");}}package cn.com.gan.Proxy;import java.lang.reflect.Proxy;public class HelloProxyTest {/** * @param args */public static void main(String[] args) {Person chinese = new Chinese();ChineseHander chd = new ChineseHander(chinese);Person chineseProxy = (Person) Proxy.newProxyInstance(chinese.getClass().getClassLoader(), chinese.getClass().getInterfaces(), chd);chineseProxy.setName("panda");System.out.println(chineseProxy.getName());chineseProxy.setRate(1);System.out.println(Proxy.isProxyClass(chineseProxy.getClass()));}}