获取类对象的三种方式
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🤦♂️![在这里插入图片描述](https://img-blog.csdnimg.cn/9bd8a7bfe7c44038a1ef3e46c44e4995.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARWNob2Zn,size_20,color_FFFFFF,t_70,g_se,x_16)
JAVABEABN:完备能力的类
apach :"BeanUtil工具类用来操作JavaBean