如何从字符串创建Java内置对象

cod*_*ons 2 java reflection

假设我想从string创建一个Java对象.

Object obj = Class.forName("com.my.object.MyObject").newInstance();
Run Code Online (Sandbox Code Playgroud)

我能够创建MyObject.我的问题是如何从字符串中创建Java内置对象,如Long或String.我需要这样做,因为我只能以文本格式知道运行时对象的类型.

我做了这个,但没有奏效.

Object obj = Class.forName("java.lang.Long").newInstance();
Run Code Online (Sandbox Code Playgroud)

Nil*_*lsH 11

java.lang.Long没有参数构造函数,所以你不能这样调用newInstance.相反,您必须使用正确的参数查找构造函数,构建参数数组,然后调用构造函数.

Constructor constr = Class.forName("java.lang.Long").getConstructor(String.class);
Object myLong = constr.invoke("5");
Run Code Online (Sandbox Code Playgroud)