Live2D

动态代理的工具类

package com.lix.demo4;

import com.lix.demo3.Host;
import com.lix.demo3.Rent;

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

public class ProxyInvocationHandler implements InvocationHandler {

//被代理的接口
private Object target;

public void setTarget(Object target) {
    this.target = target;
}

//得到代理类
public Object getProxy(){
     return Proxy.newProxyInstance(this.getClass().getClassLoader(),target.getClass().getInterfaces(),this);
}

//处理代理实例并返回结果
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

    //动态代理的本质就是使用反射机制
    log(method.getName());
    Object result = method.invoke(target, args);

    return result;
}

public void log(String msg){
    System.out.println("执行了"+msg+"方法");
}

}

posted @ 2021-08-16 16:20  六爻呈乾  阅读(43)  评论(0编辑  收藏  举报