我有一个包含字符串类型 - >的数据的列表 ["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()不会返回已排序的字段.
实际上,我有一个只接受字符串列表的方法,所以通过使用反射我将对象转换为字符串列表,然后我想做相反的事情.我没想到有任何其他方法可以做到这一点.
我创建了一个简单的 Xtext 项目,我想生成一些规范文件。使用ANTTLR工具,我将根据Xtext项目的规范文件生成一些其他文件。我创建了一个插件,它使用规范文件并使用 ANTLR 解析器自动生成我需要的其他文件。我的问题是我是否可以将此插件与 Xtext 编辑器集成?更具体地说,如果一个用户想要使用该插件,它将看到 Xtext 编辑器,然后它将创建规范文件,最后,通过按按钮将使用 ANTLR 工具生成文件(最后一步已经完成。)有人有什么想法吗?