上海花千坊

java语言

Java类别的载入器

时间:2020-12-07 16:19:16 java语言 我要投稿

Java类别的载入器

  类加载器(class loader)是Java中的一个很重要的概念。类加载器负责加载 Java 类的字节代码到Java虚拟机中!下面是小编为大家搜索整理的Java类别载入器,希望大家能有所收获,更多精彩内容请及时关注我们考试网!

  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();

  }

  }

【Java类别的载入器】上海花千坊相关的文章:

1.Java类加载器类介绍

2.Java对象和类

3.Java import以及Java类的搜索路径

4.Java类库及其组织结构(Java API)

5.java类笔试题目

6.java集合类基本简介

7.java类文件内容介绍

8.浅谈Java类与类之间的关系