前言
最近在复习一些java知识,想着将之前没有注意的知识记录下来。第一次写博客,如果有什么问题的话希望大家指出来,共同探讨。
正文
什么是动态代理
动态代理其实就是代理类是由动态生成的。如果需要被代理的类有很多的话,就不用去一个个写代理类,符合面向切面编程,aop就是由动态代理来实现的。
动态代理实现方法
JDK动态代理
JDK动态代理是由 java.lang.reflect 包下的 Proxy 类的 newProxyInstance 来实现的。
首先看下 newProxyInstance 的方法参数:
public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,
InvocationHandler h)
第一个参数是一个类加载器,可以使用被代理类来获得这个参数;
第二个参数是一个Class类数组,其实就是被代理类的所有实现接口;
第三个参数是一个接口,需要我们实现这个接口类,并且代理方法都在这个接口类的 invoke 方法中来实现。
接下来看实现方法,首先我们先假设一个场景,我们需要出售手中的一台笔记本电脑,然后我们将电脑挂到闲鱼上去买,这是我们手中的电脑就是被代理的类,而闲鱼就是代理类,它可以做一些自己的操作。
实现代码:
1.被代理的类需要实现一个接口,接口代码如下:
TradingPlatform.java
//交易平台接口
public interface TradingPlatform {
void productInfo();
}
2.被代理类:
PersonalTrading.java
//个人交易,实现交易平台这个接口
public class PersonalTrading implements TradingPlatform {
public void productInfo() {
System.out.println(