MST
星途 面试题库

面试题:Java反射机制中类加载的时机有哪些

在Java反射机制里,通常在哪些场景下会触发类的加载?请举例说明。
17.0万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

在Java反射机制中,以下场景会触发类的加载:

  1. 使用new关键字创建对象时
    ClassA obj = new ClassA();
    
    当执行上述代码创建ClassA类的实例时,会触发ClassA类的加载。
  2. 访问类的静态成员时
    System.out.println(ClassB.staticField);
    
    当访问ClassB类的静态字段staticField时,会触发ClassB类的加载。同样,调用类的静态方法也会触发类加载,例如ClassB.staticMethod();
  3. 使用Class.forName()方法时
    Class<?> clazz = Class.forName("com.example.ClassC");
    
    Class.forName("com.example.ClassC")会触发com.example.ClassC类的加载。如果forName方法使用带有第二个参数true的重载形式(Class.forName("com.example.ClassC", true, classLoader)),第二个参数表示是否初始化类,true表示初始化,此时不仅触发类加载,还会执行类的初始化阶段。
  4. 子类的加载会触发父类的加载
    class Parent {}
    class Child extends Parent {}
    Child child = new Child();
    
    当创建Child类的实例时,会先触发Parent类的加载,然后再加载Child类。