Java基础复习笔记系列 十三 反射机制
主题:Java反射机制
学习资料参考网址:
1.http://www.icoolxue.com
1、Java反射机制。
各种框架中都使用到了Java的反射机制。
两个类:java.lang.Class;java.lang.ClassLoader.
2、ClassLoader类。
ClassLoader并非加载一次,是动态加载。需要的时候才加载。static语句块只执行一次。ClassLoader负责把类load到内存。
当我们执行Java程序的时候,首先执行JVM,然后再把java class加载到JVM里运行,负责加载java class的这部分叫做class loader。JVM本身包含一个class loader,即bootstrap class loader。bootstrap class loader是用本地代码实现的,它负责加载核心的java class,另外JVM还提供两个由Java写的class loader,即extension class lodaer和application class loader。它们两个都由bootstrap class loader来加载。其中Extension class loader负责加载扩展的java class(如javax.*开头和JRE/ext目录下的类);application class loader负责加载应用程序自身的类。
3、JDK中常见的几个ClassLoader。(认识他们)
bootstrap class loader,最核心的class Loader。其他的class loader都是由bootstrap class loader来loader进来的。当在控制台往出打印的时候,显示null。它是用C++编写的,从jre/lib中加载类。
extension class loader。
application class loader。我们自己定义的类,是由application class loader来loader进来的。
URLclassloader。网上的一些类,由它来loader。它是SecureClassLoader的之类。
classLoader的层次关系(不是继承关系,是层次关系;没有继承关系):bootstrap --> extension -->application(在application class loader中有一个引用,指向了extension class loader).所以,application.getParent--->指向了extension class lodaer.
类加载的时候,追根溯源。找到最parent的class loader来加载。避免了病毒问题。”有什么事,先问他爸爸!”也就是说:一个class loader要加载一个类的时候,首先要查找其父加载器是否加载了,如果找不到,才由自己加载,这个过程一直往上递归处理。
4、程序运行中,class loader的运用。
当一个程序启动的时候,JVM也随着启动,运行bootstrap class loader。该类加载器负责加载Java核心API(Extclasslodaer和Appclassloader),然后调用Extclassloader加载扩展API,最后Appclassloader加载CLASSPATH目录下定义的class。这即是一个程序最基本的加载流程。
5、
Java基础复习笔记系列 十三 反射机制的更多相关文章
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- Java基础复习笔记系列 三
前几节都是基础中的基础,从第三讲的笔记开始,每次笔记针对Java的一个知识块儿. Java异常处理 1.什么是异常? 异常是指运行期出的错误.比如说:除以一个0:数组越界:读取的文件不存在. 异常处 ...
- Java基础复习笔记系列 二
1.Java中Static的相关用法总结?(静态方法:静态变量:静态代码块) public static void main(String args[])执行的关键,在于有static.有了stati ...
- Java基础复习笔记基本排序算法
Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...
- Java基础学习笔记二十三 Java核心语法之反射
类加载器 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,链接,初始化三步来实现对这个类进行初始化. 加载就是指将class文件读入内存,并为之创建一个Class对象.任 ...
随机推荐
- 合法提交Html标签(2)
提交合法的HTML标签(2) 上面用到了一个Inherits属性,它用来设置页面与后台代码中相关联的类.我们打开CodeFile属性所指的文件,会找到该属性所指的类名.但是这里仅仅存放的是用户定义的事 ...
- Atitit 项目培训与学校的一些思路总结
Atitit 项目培训与学校的一些思路总结 1.1. Overview implet review OIR学习大法1 1.2. "录取流程,对报名者唯一的要求是学习该项目所必须的先修知识和 ...
- iOS-数据解析XML解析的多种平台介绍
在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.KissXML.Tiny ...
- Microsoft Visual Studio正忙解决办法
问题描述 前段时间用vs2015进行开发.出现如下问题,关闭vs进程重启vs还是无法解决. 如何解决 进入本地项目.vs文件夹 这个文件夹下有个.suo文件,删除该文件,用任务管理器杀掉vs的进程,重 ...
- struts1的一些基本用法和操作
入职两周了,项目是用struts1+ibatis框架搭建的,数据库是oracle,其他还行,关键是struts1之前没用用过,所以只好在网上狂查文档,最后大致整理了一些struts1的基本使用方法. ...
- css 用direction来改变元素水平方向,价值研究。
"direction"有两个值:ltr | rtl ltr:从左往右 rtl:从右往左 默认:ltr 一起看个效果就懂了. <style> div{ direction ...
- UML基础系列:用例图
1. 概述 用例图(Use Case Diagram)描述“用户.需求.系统功能单元”之间的关系,是参与者所能观察和使用到的系统功能模型图. 用例图用于需求分析阶段 用例图包含6个基本元素:参与者(A ...
- Deep learning:四十八(Contractive AutoEncoder简单理解)
Contractive autoencoder是autoencoder的一个变种,其实就是在autoencoder上加入了一个规则项,它简称CAE(对应中文翻译为?).通常情况下,对权值进行惩罚后的a ...
- 关于js中for in和foreach in的区别
js 中for in 和foreach in的区别 两个的作用都用来遍历对象,但为什么有了for in语句了还要foreach in语句呢,后来看了下foreach in开发的文档,foreach i ...
- 14个HTML5实现的效果合集
HTML5可不是什么虚幻的概念,与其高谈阔论的讨论HTML5未来的趋势和价值,不如一起研究一下现在的HTML5可以做出哪些成果,可以让我们做出出色的产品. Form Follows Function就 ...