`
白色熊猫
  • 浏览: 16729 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

转载java动态代理实例

    博客分类:
  • 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();
}

2、实现接口:
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;
}
	@Override
	public int getRate() {
		return rate;
	}
	@Override
	public void setRate(int rate) {
		this.rate=rate;
	}
}

3、实现InvocationHandler接口:
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;
	}
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		Object result=null;
		if(!method.getName().equals("setRate"))
			result=method.invoke(object, args);
		else
			System.out.println("不能够设置setRate");
		return result;
	}
	private void doAfter() {
		System.out.println("do before hello");
		
	}
	private void doBefore() {
		System.out.println("do after hello");
	}
}

4、测试:
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()));
	}

}


比较好的参考资料:http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics