为什么Boolean.class.newInstance()会抛出异常?

时间:2011-07-10 16:13:45

标签: java

我认为sunject非常不言自明。我使用JDK 1.6.0更新26,并创建了一个只有一行的新项目来确认这一点:

Boolean.class.newInstance();

它会抛出以下内容:

Exception in thread "main" java.lang.InstantiationException: java.lang.Boolean
    at java.lang.Class.newInstance0(Class.java:340)
    at java.lang.Class.newInstance(Class.java:308)

它是否会失败?如果是这样,为什么?

3 个答案:

答案 0 :(得分:23)

Boolean类有两个构造函数,都有一个参数。调用Boolean.class.newInstance()试图调用一个不存在的零参数构造函数。

答案 1 :(得分:2)

给定一个课程,你可以找出它需要构建的内容:

Class cl = // initialize somehow
// get all constructors for class
Constructor[] constructors = cl.getConstructors(); 

 // for each constructor
for(Constructor c : constructors)
{
     // if there is a zero-parameter constructor
    if(c.getParameterTypes().length == 0)
    {
        // then we can safely create a constructor for it
        cl.newInstance(); 
    }
}

答案 2 :(得分:0)

Boolean类有两个不同的构造函数。两者都有一个论点。其中一个本身需要boolean,而另一个需要String。如果将字符串传递给Boolean类时该字符串不为空,则会将其识别为将Boolean设置为true。如果它为null或不包含任何内容,则为false