(一)Class类与ClassLoader简介
来源:互联网 发布:java哪些源码值得看 编辑:程序博客网 时间:2024/06/15 12:49
一、简介:
- Class类可以获得一个对象所对应的类中的所有信息,如属性,方法,构造器,注解,其父类,实现的接口等。
- Class类的构造器是一个私有的,Class类的实例不能通过new来创建
- 一个类对应一个Class类的实例
二、获取Class对象的方式
- 通过class属性获取,该方法最为安全可靠,程序性能高
Class clazz = String.class;
- 通过对象的getClass方法
Class clazz = "Hello Java".getClass();
- 通过Class类的forName静态方法(可能抛出ClassNotFoundExceptin异常)
Class.forName("java.lang.String");
- 全类名:包名+列名,如java.lang.String
- forName使用的是全类名来获取Class对象的
三、 Class类中常用的方法
四、类加载器
- 定义
- 负责类加载工作的类
种类
- 启动类加载器(Boostrap ClassLoader)
- 使用C++代码编写
- 负责Java平台核心库的加载,如java.lang包
- 无法直接获取
- 拓展类加载器(Extension ClassLoader)
- 负责将jdk_home/lib/ext目录下的jar包或-Djava.ext.dirs指定目录下的jar包装入工作库
- 系统类加载器(System ClassLoader)
- 负责classpath或-Djava.class.path所指的目录下的类与jar包装入工作
- 用户自定义加载器(User ClassLoader)
- 用户自己定义的加载器
类加载器之间的关系
- 使用java命令启动JVM时,首先JVM会创建启动类加载器,然后启动类加载器生成拓展类加载器,并将启动类加载器设置为拓展类加载器的父加载器,之后启动类再生成系统类加载器,并将拓展类加载器设置为系统类加载器的父加载器
- 类加载器的父子关系图(树形结构)
工作过程:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的加载器都是如此,因此所有的类加载请求都会传给顶层的启动类加载器,只有当父加载器反馈自己无法完成该加载请求(该加载器的搜索范围中没有找到对应的类)时,子加载器才会尝试自己去加载。
0 0
- (一)Class类与ClassLoader简介
- Class.forName与ClassLoader(转)
- Class.forName与ClassLoader
- class.forname与classloader
- Class.forName与ClassLoader
- Class与ClassLoader
- Class.forName与ClassLoader
- java反射Reflection(一)之的类加载器ClassLoader和Class类
- Java Class卸载与ClassLoader
- Class.forName与classLoader区别
- java类加载器(java.lang.ClassLoader) 与 Class.forName()
- java类加载器(java.lang.ClassLoader) 与 Class.forName()
- 类的加载:Class.forName与ClassLoader.loadClass
- 类加载器:ClassLoader与Class的区别
- Class.forName()与ClassLoader.loadClass的区别(转)
- Java反射基础(一) — ClassLoader简介
- Class.forName()与ClassLoader.loadClass()的区别
- ClassLoader.loadClass()与Class.forName()的区别
- mysql索引知识
- Android http Post 传文件
- 【linux】Makefile 基本知识
- 获取本机系统时间
- 我的算法14
- (一)Class类与ClassLoader简介
- 使用Git实现版本控制(一)
- grunt基本介绍
- bilibili主题切换
- 线性表续——双向、循环链表
- Spring面试,IoC和AOP的理解
- 时间序列模型
- 错误:java.lang.IllegalArgumentException: Service not registered
- code[vs] 1154能量项链(成环的区间dp)