类加载器的类加载可以实现为在另一个类引用它时立即加载一个类或延迟加载该类直到需要类初始化,但您应该注意,在某些情况下,行为可能与新的不完全相同,并且其他人可能也一样。如果 Class 在实际使用之前被加载,它可以在初始化之前放在里面。这可能因JVM而异,但JLS保证在需要静态初始化时会加载一个类。对于给定的命名空间,类加载仅执行一次,除非相关类先前已被卸载。因此,等效表达式A.class.getClassLoader().loadClass("B's canonical name")在大多数情况下只会执行一次。换句话说,如果您有两个表达式 - new A(),则 loadClass 将只执行一次。