Class c = Integer.class
说我只有c
如何从中创建Integer
对象?
请注意,它并不一定需要是Integer,我喜欢这样做。
答案 0 :(得分:1)
您可以使用newInstance()方法。
c.newInstance();
创建例外。
<强>输出:强>
Caused by: java.lang.NoSuchMethodException: java.lang.Integer.<init>()
<强>更新强>
对于没有默认(无参数化)构造函数的类,您无法在不知道其类型的情况下创建实例。对于其他人,请参阅以下示例及其输出。
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
Class stringClass = String.class;
Class integerClass = Integer.class;
try {
System.out.println(stringClass.getConstructor());
Object obj = stringClass.newInstance();
if (obj instanceof String) {
System.out.println("String object created.");
}
System.out.println(integerClass.getConstructor());
obj = integerClass.newInstance();
if (obj instanceof Integer) {
System.out.println("String object created.");
}
} catch (NoSuchMethodException e) {
// You can not create instance as it does not have default constructor.
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
}
输出
public java.lang.String()
String object created.
java.lang.NoSuchMethodException: java.lang.Integer.<init>()
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at xyz.Abc.main(Abc.java:15)
答案 1 :(得分:0)
由于Integer
类的实例为immutable
,您需要这样的内容:
public static void main(String args[]) throws Exception {
Class<?> c = Integer.class;
Constructor<?>[] co = c.getDeclaredConstructors(); // get Integer constructors
System.out.println(Arrays.toString(co));
Integer i = (Integer) co[1].newInstance("5"); //call one of those constructors.
System.out.println(i);
}
O / P:
[public java.lang.Integer(int), public java.lang.Integer(java.lang.String) throws java.lang.NumberFormatException]
5
您需要明确地执行这些操作,因为Integer
类不提供 mutators / default构造函数我们通过使用构造函数注入初始化值。
答案 2 :(得分:-2)
试试这个
Class c = Class.forName("package.SomeClass");//If you have any specific class
然后实例:
Object obj = c.newInstance();
int intObj = (Integer) obj