获取类对象的三种方式
package proxy;
public interface Subject {
public void shopping();
}
package proxy;
/**
* 要代理买货的人
*/
public class Person implements Subject{
@Override
public void shopping() {
System.out.println("付款,买到海外产品");
}
}
package proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
* 用于动态生成一个代理对象的类
*/
public class CreateProxy implements InvocationHandler {
private Object target;//被代理的对象
//创建代理对象的方法
public Object create(Object target){
this.target=target;
Object proxy = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
return proxy;//代理对象
}
/**
* 代理对象要执行的方法
* @param proxy 代理类对象
* @param method 被代理对象的方法
* @param args 被代理对象方法的参数
* @return
* @throws Throwable
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("上海外寻找客户需要的产品....");
System.out.println("跟客户确定物品");
method.invoke(target,args);
System.out.println("完成代购");
return null;
}
}
package proxy;
public class Test {
public static void main(String[] args) {
Subject person = new Person();
CreateProxy cp = new CreateProxy();
Subject proxy = (Subject) cp.create(person);
proxy.shopping();//invoke
}
}
JavaBean🤦♂️
JAVABEABN:完备能力的类
apach :"BeanUtil工具类用来操作JavaBean