您的位置:首页 > 编程语言 > Java开发

JavaSE-反射

2016-02-22 11:30 447 查看
package com.btp.t4.Reflection;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

interface Human{
void info();
void fly();
}
//被代理类
class SuperMan implements Human{

public void info() {
System.out.println("我是超人!");
}

public void fly() {
System.out.println("我可以飞!");
}

}

class HumanUtil{
public void method1(){
System.out.println("====方法1====");
}
public void method2(){
System.out.println("====方法2====");
}
}

class MyInvocationHandlers implements InvocationHandler{
Object obj;//被代理类对象的声明
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
HumanUtil h=new HumanUtil();
h.method1();

Object returnVal=method.invoke(obj, args);

h.method2();
return returnVal;
}

public void setObject(Object obj){
this.obj=obj;
}

}

class MyProxy{
//动态的创建一个代理类的对象
public static Object getProxyInstance(Object obj){
MyInvocationHandlers handler= new MyInvocationHandlers();
handler.setObject(obj);

return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(), handler);
}
}

public class TestAOP {
public static void main(String[] args){
SuperMan man=new SuperMan();//创建一个被代理类的对象
Object obj=MyProxy.getProxyInstance(man);
Human hu=(Human)obj;

hu.info();
System.out.println();
hu.fly();

}
}


TestAOP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: