我将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
包含String
,String[]
和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[]
字段?
这是一个干净的方法还是有一个更清洁的方式这样做?
提前致谢。