当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
Java类别载入器
发布时间:2011/4/14 9:41:54 来源:城市学习网 编辑:ziteng
   1 Java的动态特性
    Java的动态特性有两种,一是隐式的;另一种是显示的。隐式的(implicit)方法就是当程式设计师用到new 这个Java 关键字时,会让类别载入器依需求载入您所需要的类别,这种方式使用了隐式的(implicit)方法。显式的方法,又分成两种方式,一种是藉由java.lang.Class 里的forName()方法,另一种则
    是藉由java.lang.ClassLoader 里的loadClass()方法。您可以任意选用其中一种方法。
    2 隐式的动态特性
    在执行java文件时,只有单独的变量声明是不会载入相应的类的,只有在用new生成实例时才载入
    如示例所示:
    public class Main
    public static void main(String args[])
    {
    A a1 = new A() ;
    B b1 ;
    }
    类A和B相同,如下:
    public class A
    {
    public void print(“using A”);
    }
    编译后,可用java –verbose:class Main运行,察看输出结果。可以看到JVM只载入了A,而没有载入B.
    另外,类的载入只在执行到new一个类时,才载入,如果没有执行到new语句,则不载入。
    如://类Office
    public class Office
    {
    public static void main(String[] args)
    {
    Word myword=null;
    Excel myexcel=null;
    if (args[0].equals("Word"))
    {
    myword = new Word();
    myword.start();
    }
    if (args[0].equals("Excel"))
    {
    myexcel = new Excel();
    myexcel.start();
    }
    }
    }
    //类Word和Excel基本相同,如下
    public class Word
    {
    public void start()
    {
    System.out.println("using word");
    }
    }
    在dos命令提示符下,输入java –verbose Office Excel可以看到JVM只载入Excel类,而不载入Word类。
    3 显示的动态特性
    3.1 java.lang.Class里的forName()方法
    在上一个Office示例中,进行如下修改:
    一 加入Assembly类
    public interface Assembly
    {
    public void start();
    }
    二 让Word和Excel类实现该接口
    public class Word implements Assembly
    {
    public void start()
    {
    System.out.println("using word");
    }
    }
    三 Office 类如下所示
    public class Office
    {
    public static void main(String[] args) throws Exception
    {
    java.lang.Class c = java.lang.Class.forName(args[0]);
    Object o = c.newInstance();
    Assembly a = (Assembly)o;
    a.start();
    }
    }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved