[JavaCore] 取得类的字节码、取得类的装载器
三种方式取得类的字节码:
1. 类名.class
BranchInfoService.class
2. 对象名.getClass()
branchInfoService.getClass()
3. Class.forName(类全名),数据库驱动导入就是使用的这种方式:
Class.forName("com.garinzhang.BranchInfoService")
取得类的类装载器,使用字节码.getClassLoader()方法获得:
1. 最高类装载器:Bootstrap,由java虚拟机提供,内部使用C/C++实现,用于导入JDK核心类(加载jre/目录下的核心库),也用于导入另外两个类加载器:ExtClassLoader, AppClassLoader
// 打印为null,最高层的类加载器,取得为空
System.out.println(System.class.getClassLoader());
2. 类装载器ExtClassLoader会在启动时加载/jre/lib/ext/目录下的扩展包
// 打印出class sun.misc.Launcher$ExtClassLoader,根据路径可以找到此类
System.out.println(AcctRecordDTO.class.getClassLoader().getParent().getClass());
3. 应用编写的类-即项目中程序员编写的类(加载CLASSPATH路径下的包),由AppClassLoader导入:
// 打印出 sun.misc.Launcher$AppClassLoader@192d342,根据路径可以找到此类
System.out.println(AcctRecordDTO.class.getClassLoader());
ExtClassLoader和AppClassLoader不是继承关系,但是为什么可以使用class.getClassLoader.getParent()取到ExtClassLoader呢?这个待研究
继承关系:
java.lang.Object
--- java.lang.ClassLoader
--- java.security.SecureClassLoader
--- java.net.URLClassLoader
--- sun.misc.Launcher$ExtClassLoader
java.lang.Object
--- java.lang.ClassLoader
--- java.security.SecureClassLoader
--- java.net.URLClassLoader
--- sun.misc.Launcher$AppClassLoader
参考:
http://blog.csdn.net/irelandken/article/details/7048817
http://blog.csdn.net/irelandken/article/details/7046689
[JavaCore] 取得类的字节码、取得类的装载器的更多相关文章
- 从Java进程里dump出类的字节码文件
想要查看一些被增强过的类的字节码,或者一些AOP框架的生成类,就需要dump出运行时的Java进程里的字节码. 从运行的java进程里dump出运行中的类的class文件的方法: 用agent att ...
- 浅谈Java反射机制 之 获取类的字节码文件 Class.forName("全路径名") 、getClass()、class
另一个篇:获取 类 的 方法 和 属性(包括构造函数) 先贴上Java反射机制的概念: AVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它 ...
- <JVM中篇:字节码与类的加载篇>04-再谈类的加载器
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- <JVM中篇:字节码与类的加载篇>03-类的加载过程(类的生命周期)详解
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- <JVM中篇:字节码与类的加载篇>02-字节码指令集
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- <JVM中篇:字节码与类的加载篇>01-Class字节码文件结构
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- Java-ASM框架学习-从零构建类的字节码
Tips: ASM使用访问者模式,学会访问者模式再看ASM更加清晰 什么是ASM ASM是一个操作Java字节码的类库 学习这个类库之前,希望大家对Java 基本IO和字节码有一定的了解. 高版本的A ...
- Java-ASM框架学习-修改类的字节码
Tips: ASM使用访问者模式,学会访问者模式再看ASM更加清晰 ClassReader 用于读取字节码,父类是Object 主要作用: 分析字节码里各部分内容,如版本.字段等等 配合其他Visit ...
- 一个类的类类型是Class类的实例,即类的字节码
new 是静态加载类,编译时期加载.一遍功能性的类 需要动态加载
随机推荐
- Unity3d 防止内存修改工具的小方法
一个非常简单的方法,直接上代码. private int curATK; private int curAtkKey; public int CurATK { get { return curATK ...
- linux下的防火墙iptables
防火墙(firewall),也称为防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网.它是一项信息安全的防护系统,依照特定的规则,允许或者是限制传输的数据通过. ...
- Mathematics:Find a multiple(POJ 2356)
找组合 题目大意:给你N个自然数,请你求出若干个数的组合的和为N的整数倍的数 经典鸽巢原理题目,鸽巢原理的意思是,有N个物品,放在N-1个集合中,则一定存在一个集合有2个元素或以上. 这一题是说有找出 ...
- QT Creator调用动态链接库实例
#include<iostream> #include <QLibrary> using namespace std; int main() { cout<<&qu ...
- tomcat bin 中startup.sh中的环境变量配置
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64 JRE_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/jre P ...
- 通过configSource提高web.config配置灵活性
很多时候我们会有这样的情况,开发环境和测试环境中的配置文件是不一样的,最明显的就是数据库连接串,这样,每次我们发布一个测试版本,都要手动去修改一下配置文件,是不是很麻烦的说.其实利用web.confi ...
- HTML超链接
打开网页在 想要查看的位置右键单击 审查元素 则可以查看代码 点击图片右键单独打开 则可以查看图片位置 一.超链接 a标签 <a href="地址"> ...
- linux 卸载软件
sudo apt-get autoremove --purge 后跟要卸载的软件名称, --purge表示要完全卸载.
- Linux mpstat字段解析
mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查看所有 ...
- 原始套接字SOCK_RAW
原始套接字SOCK_RAW 实际上,我们常用的网络编程都是在应用层的报文的收发操作,也就是大多数程序员接触到的流式套接字(SOCK_STREAM)和数据包式套接字(SOCK_DGRAM).而这些数据包 ...