Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Class.forName()与Thread.currentThread().getContextClassLoader().loadClass()的比较_Java_Class_Static - Fatal编程技术网

Java Class.forName()与Thread.currentThread().getContextClassLoader().loadClass()的比较

Java Class.forName()与Thread.currentThread().getContextClassLoader().loadClass()的比较,java,class,static,Java,Class,Static,有人能给我解释一下Class.forName()和Thread.currentThread().getContextClassLoader().loadClass()之间的区别吗。 我有下一个密码 <code> public class Test { static { System.out.println("Hello from static block"); } } public class Application { publi

有人能给我解释一下Class.forName()和Thread.currentThread().getContextClassLoader().loadClass()之间的区别吗。 我有下一个密码

<code>
public class Test {
    static {
        System.out.println("Hello from static block");
         }
}

public class Application {
    public static void main(String[] args) throws ClassNotFoundException {
//Class test = Class.forName("com.home.Test"); //Outputs "Hello from static block"
  Thread.currentThread().getContextClassLoader().loadClass("com.home.Test");
}
}
</code>
当我执行Class.forName(“com.home.Test”)时,它会输出“来自静态块的Hello”。但是当我执行Thread.currentThread().getContextClassLoader().loadClass(“com.home.Test”)时;它不输出任何内容。

不会解析该类(因此也不会初始化它)

另一方面,初始化类。这就是为什么在这种情况下会运行初始值设定项,但在使用
loadClass
时不会运行初始值设定项

如果您想了解详细信息,加载/链接/初始化步骤将在本节的JSL中描述(这是一篇有趣的文章)