Ekt 相关知识点

运行环境:
JDK8 + IntelliJ IDEA 2018.3 

本文中使用的jar包链接
 
https://files.cnblogs.com/files/papercy/jsoup_jar%E5%8C%85.rar

重要知识点:
1
类加载器在Java中是以java.lang.ClassLoader类型存在 2 每一个类被加载后,都会有一个Class的实例来代表,而每个Class的实例都会记得自己是由哪个ClassLoader加载的。 3 可以通过Class的getClassLoader()取得加载该类的ClassLoader 4 可以通过ClassLoader的getParent()取得自己的parent 5 注意:返回null并不代表没有parent,因为Bootstrap Loader 是用C语言编写的,所以没有一个实际的类来表示它。 6 可以通过ClassLoader的loadClass()加载类。这时不会立即运行静态块,会等到创建类的实例时才会运行。
练习1:输出系统类加载器及其父加载器 

public class Work3 {
    public static void main(String[] args) {
        Class clz;
        ClassLoader cl,cla;

        //得到系统类加载器
        cl= ClassLoader.getSystemClassLoader();
        System.out.println(cl);

        //输出其父类加载器
        while (cl!=null){
          cla=cl;
          cl= cla.getParent();
          System.out.println(cla+"的父类加载器是:"+cl);
        }
}
1 练习三:输出加载当前类的加载器
2     Class cls=Work3.class;
3     ClassLoader loader = cls.getClassLoader();
4     System.out.println("当前类的加载器"+loader);

 

练习3:输出加载Object类的加载器 
       clz=Class.forName("java.lang.Object");
       cl=clz.getClassLoader();
       System.out.println("object的加载器是:"+cl);

 

运行结果:

 

 

总结:四个方式得到Class对象

 

1         Object s = new String();
2         Class clz1 = s.getClass();
3 
4         Class str=String.class;
5 
6         Class clz = Class.forName("java.io.IOException");
7 
8         ClassLoader loader = ClassLoader.getSystemClassLoader();
9         Class clz3 = loader.getClass();

 

 

乾坤未定,你我皆是黑马!!!

 

posted @ 2020-08-21 18:28  Kc_blog  阅读(130)  评论(0编辑  收藏  举报