package com.cgm.invokeclass;
import java.lang.reflect.Method;
/*
* 关于动态代理的两个核心类
* 1.Proxy
* 用来创建给定接口的子类,在内存中动态创建 $proxy() 执行一次
* 2.InvicationHandler 执行句柄。。在执行时可以获取被代理类的反射。 执行多次,用户的每一次调用都会被这个句柄所拦截
*
* 3.关于类加载器 有3
* 1 BootStrapClassLoader 根类加载器 ----加载jdk下rt.jar
* 2 ExtClassloader java扩展类加载器---- jdk下 的 ext文件夹下了类
* 3 AppClassLoader----加载系统的类 我们自己写的类 Web_info下 class文件夹下的类
* 因为jdk的父类委托机制 任务由下往上 委托执行 下列代码证明
*
* 如何用cmd给class打jar包
* 如把包 com/cgm/ss/VBBB.class
* copy到某个目录下 D:a目录----》
* 开cmd 到 D:\a\com>cd..
* D:\a>.jar -vcf aa.jar com.*
*
*/
public class ProxyDemo {
public static void main(String[] args) throws Exception {
ProxyDemo p=new ProxyDemo();
System.out.println(p.getClass().getClassLoader());
System.out.println(ProxyDemo.class.getClassLoader()); //和上面同一个内存地址 应该是 由AppClassLoader加载
System.out.println(ProxyDemo.class.getClassLoader().getParent());//ExtClassLoader 父类
System.out.println(ProxyDemo.class.getClassLoader().getParent().getParent()); //返回null,跟类加载器不允许使用
System.out.println(String.class.getClassLoader()); //取得根类加载器 因为String是jre下rt.jar的方法
}
@Override
public String toString() {
return "你好朋友";
}
}
import java.lang.reflect.Method;
/*
* 关于动态代理的两个核心类
* 1.Proxy
* 用来创建给定接口的子类,在内存中动态创建 $proxy() 执行一次
* 2.InvicationHandler 执行句柄。。在执行时可以获取被代理类的反射。 执行多次,用户的每一次调用都会被这个句柄所拦截
*
* 3.关于类加载器 有3
* 1 BootStrapClassLoader 根类加载器 ----加载jdk下rt.jar
* 2 ExtClassloader java扩展类加载器---- jdk下 的 ext文件夹下了类
* 3 AppClassLoader----加载系统的类 我们自己写的类 Web_info下 class文件夹下的类
* 因为jdk的父类委托机制 任务由下往上 委托执行 下列代码证明
*
* 如何用cmd给class打jar包
* 如把包 com/cgm/ss/VBBB.class
* copy到某个目录下 D:a目录----》
* 开cmd 到 D:\a\com>cd..
* D:\a>.jar -vcf aa.jar com.*
*
*/
public class ProxyDemo {
public static void main(String[] args) throws Exception {
ProxyDemo p=new ProxyDemo();
System.out.println(p.getClass().getClassLoader());
System.out.println(ProxyDemo.class.getClassLoader()); //和上面同一个内存地址 应该是 由AppClassLoader加载
System.out.println(ProxyDemo.class.getClassLoader().getParent());//ExtClassLoader 父类
System.out.println(ProxyDemo.class.getClassLoader().getParent().getParent()); //返回null,跟类加载器不允许使用
System.out.println(String.class.getClassLoader()); //取得根类加载器 因为String是jre下rt.jar的方法
}
@Override
public String toString() {
return "你好朋友";
}
}