如果我访问MyClass.class.getName(),是否会加载Java类?

Dan*_*ski 2 java

我希望在我的应用程序初始化期间显式初始化一些类Class.forName,但为了使代码在重构中存活,我想使用它:

Class.forName(MyClass.class.getName());
Run Code Online (Sandbox Code Playgroud)

我想知道:一旦getName方法执行就不会加载类,从而使得Class.forName不必要?

Mic*_*rdt 8

实际上,即使是getName()调用也是不必要的,因为为了使MyClass.class对象存在,必须加载和初始化类.

当然,这种方法意味着你有一个编译时依赖MyClass,当你使用Class.forName()String文字时,你没有.


del*_*boy 6

你可以轻松地检查出来.只需添加以下内容:

static { System.out.println("Class loaded"); }
Run Code Online (Sandbox Code Playgroud)

在课堂上尝试一下.在加载类时执行静态块.