我有一个包含字符串类型 - >的数据的列表 ["classField1", "classField2", "classField3"]
我有一个方法(myMethod(List list, String className))接受List作为参数.所以,我可以通过参数将此List传递给myMethod(List list,String className).
在myMethod,我想创建一个对象,它将是className的实例,这是第二个参数.之后,我想使用List的数据设置类的字段.由于我想动态获取类的字段,因此上面的结果是我必须将列表的每个String值转换为类的每个字段的类型.
我确信列表中的字符串的顺序是正确的顺序,并且对应于具有相同顺序的类的字段.
有没有人知道如何执行上述操作?
例:
["StringtempValue", "StringUnitOfMeasurement"] =>
创建实例对象:
public class TempStruct {
private double tempValue;
private String unitOfMeasurement;
public TempStruct(double tempValue, String unitOfMeasurement) {
this.tempValue = tempValue;
this.unitOfMeasurement = unitOfMeasurement;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试用以下方式提供解决方案:
实际上我想创建一个现有类的对象,我试着用反射来做.我使用以下代码:
Class<?> cls = Class.forName(name);
Object clsInstance = (Object) cls.newInstance();
Field[] objectFields = clsInstance.getClass().getDeclaredFields();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试创建新对象时,我得到了第二行的异常.正如@JB Nijet所说,我不知道方法getDeclaredFields()不会返回已排序的字段.
实际上,我有一个只接受字符串列表的方法,所以通过使用反射我将对象转换为字符串列表,然后我想做相反的事情.我没想到有任何其他方法可以做到这一点.