Java反射类型转换数组

时间:2016-02-18 17:38:12

标签: java reflection properties

我将Config中实体类properties file的字段中的信息存储为键/值对。

fieldName1 = fieldValue1  
fieldName2 = fieldValue2  
...  

直到现在我硬编码了

Properties props = new Properties();
props.setProperty("pathToExe", config.getPathToExe()); 
// ...
Writer writer = new OutputStreamWriter(new FileOutputStream(configFile), StandardCharsets.ISO_8859_1);
props.store(writer, "");
writer.close(); 

但是,由于我想不断扩展属性,我正在考虑让它变得动态 Config包含StringString[]int类型的字段 我在Java中阅读了有关反射但我不熟悉的内容,请参阅下面的代码:

Properties props = new Properties();
Field[] fields = config.getClass().getFields();
for (Field field : fields) {
    if (!field.getName().equals("oberservers")) {
        // is it a String[] field?
        if (field.getType().isArray()) {
            try {
                props.setProperty(field.getName(), String.join(";", /* how can I cast my String[] field here? */ );
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        else {
            try {
                props.setProperty(field.getName(), field.get(config).toString());
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
   }
}
// ...
Writer writer = new OutputStreamWriter(new FileOutputStream(configFile), StandardCharsets.ISO_8859_1);
props.store(writer, "");
writer.close();

如何投放我的String[]字段?
这是一个干净的方法还是有一个更清洁的方式这样做?

提前致谢。

0 个答案:

没有答案