相关疑难解决方法(0)

从类名称动态创建java中的对象,并使用带数据的List设置类字段

我有一个包含字符串类型 - >的数据的列表 ["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()不会返回已排序的字段.

实际上,我有一个只接受字符串列表的方法,所以通过使用反射我将对象转换为字符串列表,然后我想做相反的事情.我没想到有任何其他方法可以做到这一点.

java reflection

15
推荐指数
1
解决办法
7万
查看次数

标签 统计

java ×1

reflection ×1