如何动态启动类属性

时间:2014-10-08 14:51:22

标签: java

我有以下内容

String[] header1 = {"func", "name", "lrt"};
String[] value11 ={"f1", "n1", "0.1"};
String[] value12 ={"f2", "n2", "0.2"}; 
......

String[] header2 = {"name", "func", "lrt"};
String[] value21 ={"n3", "f3", "0.1"};
String[] value22 ={"n4", "f4", "0.2"}; 
......


class unit {
  String func;
  String name;
  double lrt;
}

我有超过1000组不同的标题(及其附加值)以不同的顺序组织。

如何使用匹配不同标题的属性名称启动单元类。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我建议使用反射,因为它实际上非常简单:

unit u = new unit();
for(int i=0;i<;header1.lenght;i++) {
  String h = header1[i];
  String v = value11[i];
  Field f = u.getClass().getDeclaredField(h);
  f.set(u, v);
}

显然,您需要更多的基础设施来迭代您的数据元组... value11,value12等。

答案 1 :(得分:0)

HashMap将是您实施的更好方法:

Map<String[], ArrayList<Object[]>> unit = new HashMap<String[], ArrayList<Object[]>>();

String[] header1 = {"func", "name", "lrt"};
Object[] value11 ={"f1", "n1", 0.1};
Object[] value12 ={"f2", "n2", 0.2}; 

String[] header2 = {"name", "func", "lrt"};
Object[] value21 ={"n3", "f3", 0.1};
Object[] value22 ={"n4", "f4", 0.2}; 

ArrayList<Object[]> values = new ArrayList<>();
values.add(value11);
values.add(value12);
unit.put(header1, values);

values.clear();
values.add(value21);
values.add(value22);
unit.put(header1, values);

尝试此操作,您将拥有一个unit对象,其中包含您的所有值。