三种方式取得类的字节码:

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] 取得类的字节码、取得类的装载器的更多相关文章

  1. 从Java进程里dump出类的字节码文件

    想要查看一些被增强过的类的字节码,或者一些AOP框架的生成类,就需要dump出运行时的Java进程里的字节码. 从运行的java进程里dump出运行中的类的class文件的方法: 用agent att ...

  2. 浅谈Java反射机制 之 获取类的字节码文件 Class.forName("全路径名") 、getClass()、class

    另一个篇:获取 类 的 方法 和 属性(包括构造函数) 先贴上Java反射机制的概念: AVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它 ...

  3. <JVM中篇:字节码与类的加载篇>04-再谈类的加载器

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  4. <JVM中篇:字节码与类的加载篇>03-类的加载过程(类的生命周期)详解

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  5. <JVM中篇:字节码与类的加载篇>02-字节码指令集

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  6. <JVM中篇:字节码与类的加载篇>01-Class字节码文件结构

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  7. Java-ASM框架学习-从零构建类的字节码

    Tips: ASM使用访问者模式,学会访问者模式再看ASM更加清晰 什么是ASM ASM是一个操作Java字节码的类库 学习这个类库之前,希望大家对Java 基本IO和字节码有一定的了解. 高版本的A ...

  8. Java-ASM框架学习-修改类的字节码

    Tips: ASM使用访问者模式,学会访问者模式再看ASM更加清晰 ClassReader 用于读取字节码,父类是Object 主要作用: 分析字节码里各部分内容,如版本.字段等等 配合其他Visit ...

  9. 一个类的类类型是Class类的实例,即类的字节码

    new 是静态加载类,编译时期加载.一遍功能性的类 需要动态加载

随机推荐

  1. 使用GitHub

    1. 进入 1.1 建立账号 打开网站https://github.com/主页上就可以注册.注册之后会有一个简单的帮助文档,在帮组文档上可以下载一个PC客户端(如果是WINDOWS平台,需要.NET ...

  2. 《Head First Servlet JSP》学习笔记一

  3. Java程序优化的一些最佳实践(转)

    衡量程序的标准 衡量一个程序是否优质,可以从多个角度进行分析.其中,最常见的衡量标准是程序的时间复杂度.空间复杂度,以及代码的可读性.可扩展性.针对程序的时间复杂度和空间复杂度,想要优化程序代码,需要 ...

  4. bccomp比较大小注意

    2015年12月15日 14:18:56 星期二 echo bccomp('1', '1.01', 2); // -1 echo bccomp('1', '1.01', 3); // -1 echo ...

  5. web.config中配置页面出错后跳转指定错误页面

    每当用户访问错误页面时,会出现不友好的404错误,所以为了防止这种不友好,我们在web.config中的<system.web>节点下配置 <customErrors>,在出现 ...

  6. metro压缩和解压文件

    在1.zip中增加一张新图片StorageFile jpg = await KnownFolders.PicturesLibrary.GetFileAsync("1.jpg"); ...

  7. [转] This Android SDK requires Android Developer Toolkit version 23.0.0 or above

    问题描述: This Android SDK requires Android Developer Toolkit version 23.0.0 or above.  Current version ...

  8. android学习————项目导入常见错误整理(转载)

    详细请访问http://4789781.blog.51cto.com/4779781/1031107

  9. xcode报错,svn : is not a workingCopy

    解决方案: 1.点击对应的targets 2.选择build phases 3.在红框处有一个run script选项(截图中已经删除了.),点击下拉按钮,看看是否是与svn有关的东西, 如果是,删除 ...

  10. iOS 发送请求时获取cookie

    Cookie: 记录者用户信息的保存在本地的用户数据,如果有会被自动附上 值得一提的是,在iOS中当你发送一个任意请求时,不管你愿不愿意,NSURLRequest都会自动帮你记录你所访问的URL上设置 ...