Java类别载入器

    技术2025-01-10  14

    Java类别载入器

    Java的动态特性两种

    1,隐式的:

    当程序设计师用到"new"这个关键字的时候,会让类装入器依需求载入相应的类别

    2,显示的:

    分为两种: 1,继由java.lang.Class里的forName()方法 2,继由java.lang.ClassLoader里的loadClass()方法

    隐式的动态特性

    在执行java文件时,只有单独的变量声明是不会载入相应的类的, 只有在new生成实例时才会载入 例如:

    public class A { private int id; private String name;

    public int getId() { return 2; } public String getName() { return "李四"; } }

    类B类A雷同 public class Main {

    public static void main(String[] args) { A a = new A(); B b; System.out.println(a.getId()+a.getName()+"\n"+b.getId()+b.getName()); }

    运行时会报未初始化变量b,JVM只载入了A,而没有载入B

    显示的动态特性

    java.lang.Class里的forName()方法 类别载入器会依据继承体系最上层的类别往下依序载入,直到所有的祖先类别都载入后,才轮到自己载入 例如: 创建接口Ass public interface Ass { public void start(); } 创建类AssClass实现Ass public class AssClass implements Ass{ @Override public void start() { System.out.println("---------"); } } public class Main1 { public static void main(String[] args) throws Exception{ java.lang.Class c = java.lang.Class.forName(args[0]); Object o = c.newInstance(); Ass a = (Ass) o; a.start(); } }

    Processed: 0.009, SQL: 9