0

重载版本有什么用Class.forName()

public static Class<?> forName(String name,
                       boolean initialize,
                       ClassLoader loader)
                throws ClassNotFoundException

任何人都可以举一个首选使用的例子。

编辑:

参考下面的代码。

Class  clz=(Class)Class.forName("com.test.classloader.MyClass", false, Thread.currentThread().getContextClassLoader());

        MyClass mc=(MyClass) clz.newInstance();
        System.out.println(mc.TEST);
        System.out.println(mc.i);

我的课:

public class MyClass {

static String TEST="MYCLASS";
static int  i;
static{
    i=20;
}

}

为什么会打印

MYCLASS

20

4

2 回答 2

0

如果您想使用通过参数传递Class的特定加载 ,您将使用此方法。ClassLoaderloader

此外,initialize布尔值将说明您是否希望初始化该类。

很简单。

于 2012-06-15T07:43:41.293 回答
0

初始化是是否在该点调用静态块。

如果您使用任何静态字段或方法,则必须调用静态块,这样您就看不到行为。

您可以做的是在静态块和您的示例中添加调试输出以查看它们被调用的顺序。(或者给静态块加个异常)

于 2012-06-15T08:59:26.287 回答