@@ -8378,7 +8378,7 @@ public class ReflectDemo {
83788378
83798379### 注解格式
83808380
8381- 定义格式:自定义注解用@interface关键字 ,注解默认可以标记很多地方
8381+ 定义格式:自定义注解用 @interface 关键字 ,注解默认可以标记很多地方
83828382
83838383```java
83848384修饰符 @interface 注解名{
@@ -18588,6 +18588,7 @@ public static Object newProxyInstance(ClassLoader loader,
1858818588 //获取代理类的构造方法,根据参数 InvocationHandler 匹配获取某个构造器
1858918589 final Constructor<?> cons = cl.getConstructor(constructorParams);
1859018590 final InvocationHandler ih = h;
18591+ //构造方法不是 pubic 的需要启用权限
1859118592 if (!Modifier.isPublic(cl.getModifiers())) {
1859218593 AccessController.doPrivileged(new PrivilegedAction<Void>() {
1859318594 public Void run() {
@@ -18603,6 +18604,8 @@ public static Object newProxyInstance(ClassLoader loader,
1860318604}
1860418605```
1860518606
18607+ Proxy 的静态内部类:
18608+
1860618609```java
1860718610private static final class ProxyClassFactory {
1860818611 // 代理类型的名称前缀
@@ -18693,8 +18696,6 @@ private static final class ProxyClassFactory {
1869318696
1869418697
1869518698
18696-
18697-
1869818699***
1869918700
1870018701
@@ -18745,7 +18746,7 @@ CGLIB 的优缺点
1874518746* 优点:
1874618747 * CGLIB 动态代理**不限定**是否具有接口,可以对任意操作进行增强
1874718748 * CGLIB 动态代理无需要原始被代理对象,动态创建出新的代理对象
18748- * JDKProxy 仅对接口方法做增强,CGLIB 对所有方法做增强,包括 Object 类中的方法,toString、hashCode 等
18749+ * ** JDKProxy 仅对接口方法做增强,CGLIB 对所有方法做增强** ,包括 Object 类中的方法,toString、hashCode 等
1874918750* 缺点:CGLIB 不能对声明为 final 的类或者方法进行代理,因为 CGLIB 原理是**动态生成被代理类的子类,继承被代理类**
1875018751
1875118752
@@ -18830,7 +18831,7 @@ CGLIB 的优缺点
1883018831
1883118832例如:现有一台电脑只能读取 SD 卡,而要读取 TF 卡中的内容的话就需要使用到适配器模式
1883218833
18833- * SD卡 :
18834+ * SD 卡 :
1883418835
1883518836 ```java
1883618837 //接口
@@ -18930,7 +18931,7 @@ CGLIB 的优缺点
1893018931* 适配器类:
1893118932
1893218933 ```java
18933- public class SDAdapterTF implements SDCard {
18934+ public class SDAdapterTF implements SDCard {
1893418935 private TFCard tfCard;
1893518936 public SDAdapterTF(TFCard tfCard) {
1893618937 this.tfCard = tfCard;
0 commit comments