我正在尝试从csv文件动态创建对象。我已经到了这个部分:
假设我有这门课程:
package com.example
public TestClass {
public int hi = 0;
public String ho = "ho";
}
我也有这个csv:
hi,ho
1,"hello"
在下面的代码中,classIdentifier是类名的字符串(即" com.example.TestClass"),maps是存储从csv文件读取的数据的HashMap。
Class<T> c = (Class<T>) classIdentifier.getClass();
Set<String> keys = maps.keySet();
for(String key : keys) {
System.out.println(classIdentifier, c.getDeclaredField(key).getType());
System.out.println(maps.get(key));
c.getDeclaredField(key).set(classIdentifier, c.getDeclaredField(key).getType().cast(maps.get(key)));
}
以上代码将打印出预期值: INT 1
但是这会在演员表中抛出以下错误: java.lang.ClassCastException:无法将java.lang.String强制转换为int
虽然在给定的例子中,hi是int而ho是字符串,但我确实希望扩展此代码的用法以便能够使用任何类型进行转换。这意味着我对这些领域没有先验知识。键入,直到我使用c.getDeclaredField(key).getType()(这就是我的动态意思)。
我只是想知道如何解决它?