嗨,为什么可以实例化String而不是Numbers。我为此做了一个例子
public static void main(String[] args) throws InstantiationException,
IllegalAccessException {
String a = "s";
String newInstance = a.getClass().newInstance();
System.out.println(newInstance);
Double b = 0d;
Double newInstance2 = b.getClass().newInstance();
System.out.println(newInstance2);
}
答案 0 :(得分:12)
调用newInstace调用默认构造函数。 Double没有。
如果要使用反射进行实例化,则必须使用Class.#getConstructor通过传递适当的参数类型来获取类的一个构造函数,然后通过传递适当的参数类型来调用其方法Constructor#newInstance参数。
答案 1 :(得分:4)
java.lang.String
有一个空构造函数(调用new String()
与调用new String("")
相同)。
另一方面,数字没有no-arg构造函数(无论如何new Double()
的值是什么?没有等价于“空数”),因此无法调用方式,即使不是通过反思。