【发布时间】:2013-05-03 07:51:27
【问题描述】:
我需要加载一些类以及它们各自的静态初始化,例如,在工厂方法实现中。
如果我只是使用以下语法引用类,JVM 不会运行静态初始化部分。实际上,JVM 甚至会加载这些类吗?
Class<Shape> shapeClass = Shape.class;
或Shape s = null;
但是使用 class.forname() 它确实会执行静态初始化。
Class.forname("Shape");
问题是这是否是加载 java 类以及静态初始化的唯一方法?或者还有其他方法吗?使用 class.forname() 是否有任何显着的性能损失?
【问题讨论】:
-
+1 我刚刚遇到了一个类似的问题,我还想知道静态初始化程序是否已经在
Class<?>的实例上运行。
标签: java static initialization