我希望在我的应用程序初始化期间显式初始化一些类Class.forName,但为了使代码在重构中存活,我想使用它:
Class.forName(MyClass.class.getName());
Run Code Online (Sandbox Code Playgroud)
我想知道:一旦getName方法执行就不会加载类,从而使得Class.forName不必要?
实际上,即使是getName()调用也是不必要的,因为为了使MyClass.class对象存在,必须加载和初始化类.
当然,这种方法意味着你有一个编译时依赖MyClass,当你使用Class.forName()String文字时,你没有.
你可以轻松地检查出来.只需添加以下内容:
static { System.out.println("Class loaded"); }
Run Code Online (Sandbox Code Playgroud)
在课堂上尝试一下.在加载类时执行静态块.