我认为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)
它是否会失败?如果是这样,为什么?
答案 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
。