`
wb284551926
  • 浏览: 538756 次
文章分类
社区版块
存档分类
最新评论

几种类加载方式的区别(转载)

 
阅读更多
虚拟机加载类的途径:

1、Dog dog = new Dog();
这个动作会导致常量池的解析,Dog类被隐式装载。
如果当前ClassLoader无法找到Dog,则抛出NoClassDefFoundError。

2、Class clazz = Class.forName(“Dog”);
   Object dog =clazz.newInstance();
通过反射加载类型,并创建对象实例
如果无法找到Dog,则抛出ClassNotFoundException。

3、Class clazz = classLoader.loadClass(“Dog”);
   Object dog =clazz.newInstance();
通过反射加载类型,并创建对象实例
如果无法找到Dog,则抛出ClassNotFoundException。

那么,1和2和3究竟有什么区别呢?分别用于什么情况呢?

1和2使用的类加载器是相同的,都是当前类加载器。(即:this.getClass.getClassLoader)。
3由用户指定类加载器。

如果需要在当前类路径以外寻找类,则只能采用第3种方式。第3种方式加载的类与当前类分属不同的命名空间。
当前类加载器命名空间对其不可见。当然,如果被加载类的超类对于当前类命名空间可见的话,则可以进行强制转型。

第1和第2种情况区别不大。如果,Dog类在编译时无法得到,则使用第2种方式。

另外,第1种和第2种都会导致类被初始化,即:执行类的静态初始化语句,而第3种情况不会。
另外注意,第1种抛出Error,第2、3种抛出Exception,它们分属于不同的异常/错误分支。

-----------------------------

对象实例化方式:
1、new Dog();
2、clazz.newInstance();或者clazz.getConstructor(...).newInstance(...);
3、Object.clone();//通过本地方法进行复制
4、反序列化 
分享到:
原帖地址:http://liliugen.iteye.com/blog/259106
分享到:
评论

相关推荐

    everything

    转载善用佳软,本人用的时候都是用alt+F快捷键的,这个需要到选项设置一下,检索速度太快,占用内存平时7MB左右,不能检索文件内容,仅文件名。可以开启http或ftp服务,用来共享文件还是不错的,毕竟校网传输速度...

    WP主题:HotNewspro 2.72

    2. 直接获取日志中插入的第一张图片作为缩略图,优点:支持外链,使用方便,缺点:无裁剪,插入日志中的图片尺寸较大,直接调用为缩略图,一个页面同时加载显示十几张200、300K的图片,页面打开速度可想而知,其它...

    Leadtools_Crack_16

    提供几种不同级别Internet支持,包括:可封装到CAB文件的对象、能在web服务器端构造的对象、从URL或存储器装载图像的功能、支持HTTP 和FTP的控件、解析并加载到web服务器端的文件控件,以及用来构造功能强大、通过...

    ArcEngineBook

    怎么样使用Engine来保存Mxd文件(几种情况)? 36 在ArcGIS Engine开发时如何改变标注字段 37 对shape文件添加字段 38 在ArcGisEngine 开发中如何在Toolbar控件上添加Combobox等其他控件 40 自相交对象的处理 41 在...

    淘金筛(数据王国的“BaiDu”超级搜索过滤)

    比较操作有如下几种: 相等、不等、大于、大于或等于、小于、小于或等于、两者之间、列举多个(相等) 3、模糊匹配 字段列下拉框选择一项,操作类型下拉框选择包含操作,直接在过滤输入中输入包含的数字或文本或...

    asp.net知识库

    C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用...

    QFarm4.6_Beta2_20100629.1200.7z

    修正了几个加载缓存时的错误 日期: 2010/06/21 1.世界杯活动加到15场小组 2.活动送的动物加到包里,可以在牧场放养 3.加入世界杯活动到好友可以看到他的积分 日期: 2010/06/19 1.加入牧场动物包可以送的动物 ...

    windows用户称拦截api

    Windows用户层下拦截api的原理与实现(附源码) (2008-03-29 16:15:07)转载▼ 标签: computer 杂谈 声明:本页所发布的技术文章及其附件,供自由技术传播,拒绝商业使用。本页文章及其附件的所有权归属本文作者...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问...

    arcgis工具

    (对线要素进行标注时,如果标注在线上,标注和线会叠加显示,效果不理想,下面叫介绍一种可以在显示标注的地方把线断开的方法,这样效果会美观一些) 操作步骤: 1).把标注转成注记,保存在GDB中 2). 用...

    JS组件Bootstrap Table使用方法详解

    第二种方式交第一种而言在处理复杂数据时更为灵活,一般使用第二种方式来进行table数据填充。 [js] view plain copy $(function () { //1.初始化Table var oTable = new TableInit(); oTable.Init(); /...

Global site tag (gtag.js) - Google Analytics