当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

<b>JAVA程序的类加载及其反射机制</b>[Java编程]

赞助商链接



  本文“<b>JAVA程序的类加载及其反射机制</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

JAVA中类文件加载是动态的.JVM指令是被封装在了. class文件里面,而.class文件的加载历程是动态的,也就是说当我们用到的时刻才会去加载,假如不用的话,就不会去加载我们的类.这里所说的用到包含两种方法,第一种就是new一个对象的时刻(这个时刻要分外注意,当计划到多态的时刻,就会有一点点改变,这时刻编译器会做一些优化,这样以来当加载的时刻会提早加载计划到多态的类,关于这一点下面有个例子(example 1)来阐明.另一种就是当一个类的静态代码被调用的时刻.

java 代码
//example 1
// Zoo.java
abstract class Animal {
Animal(){
System.out.println("Animal constructor");
}
}
class Tiger extends Animal {
Tiger(){
System.out.println("Tig constructor ");
}
}
class Dog extends Animal {
Dog(){
System.out.println("Dog Constructor ");
}
}
public class Zoo {
private Animal am; //Example 1.1
//private Dog am; Example 1.2
private Tiger tiger;
Zoo(){
tiger = new Tiger();
am = new Dog();
}
public static void main(String [] args){
System.out.println("new Zoo before");
Zoo z = new Zoo();
System.out.println("new Zoo after ");
}
}

当我们注释掉Example.1.1行时,运行Example1.2行,后果以下:

Example 1.2

解析以上两图的运行后果我们可以看出:当我们将子类对象赋值给父类时,编译器会做一点优化,于是加载器在还没有new 子类对象的时刻已经加载了父类以及子类(example1.1后果),当不存在多态的时刻,我们可以看到是当要new Dog()的时刻才会加载Dog以及父类.无论何种方法,在new之前,类确切已经加载到了内存中.

JAVA为我们供应了两种动态机制.第一种是隐式机制.其实new一个对象和调用类的静态办法时,就是隐式机制在工作.第二种是显示机制.显示的机制又有两种战略(第一种是用java.lang.Class的forName(String str)办法,第二种是用java.lang.ClassLoader的loadClass()).

第一种:操纵forName办法

当我们查API文档就会发现forName办法有两种情势.辨别以下:

public static Class<?> forName(String className)
throws ClassNotFoundException
public static Class<?> forName(String name,
boolean initialize,
ClassLoader loader)
throws ClassNotFoundException


  以上是“<b>JAVA程序的类加载及其反射机制</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .