interface human{ void info(); void fly(); } class SuperMan implements human{ public void info(){ System.out.println("我是超人"); } public void fly(){ System.out.println("I can fly"); } } class HumanUtil{ public void method1(){ System.out.println("=========方法一============="); } public void method2(){ System.out.println("=========方法二============="); } } class MyInvocationHandler implements InvocationHandler{ //被代理对象声明 Object obj; public void setObject(Object obj){ this.obj=obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { HumanUtil h = new HumanUtil(); h.method1(); Object returlVal=method.invoke(obj, args); h.method2(); return returlVal; } } class MyProxy{ //动态的创建一个代理类对象 public static Object getProxyInstance(Object obj){ MyInvocationHandler handler = new MyInvocationHandler(); 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(); } }