JDK动态代理快速入门

来源:互联网 发布:全民公敌 知乎 编辑:程序博客网 时间:2024/06/08 01:36

定义一个接口

public interface Person {    String say(String say);}

定义一个类实现这个接口

public class Student implements Person{    @Override    public String say(String say) {        String s = "Student say:"+say;        System.out.println(s);        return s;    }}

动态代理使用

public static void main(String[] args) {        Person student = new Student();        Person p = (Person) Proxy.newProxyInstance(student.getClass().getClassLoader(), student.getClass().getInterfaces(), new InvocationHandler() {            @Override            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {                System.out.println("student 说话前");                Object invoke = method.invoke(student, args);                System.out.println("student 说话后");                return invoke;            }        });        String s = p.say("我还是个孩子");        System.out.println("返回的结果:"+s);    }

这里写图片描述