我得到了下面的源代码来映射属性文件到我的对象。
private Configuration MapPropertiesToObjectOrNull(Properties defaultProps){
Configuration config = new Configuration();
Enumeration e = defaultProps.propertyNames();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
try {
Field currField = config.getClass().getDeclaredField(key);
try {
currField.set(config, defaultProps.getProperty(key) );
} catch (IllegalAccessException e1) {
e1.printStackTrace();
}
} catch (NoSuchFieldException e1) {
e1.printStackTrace();
}
}
return config;
}
这是一个很好的"映射方法",以避免硬编码的"键"字符串在我的源代码?你也许还有别的主意?
您把事情弄复杂了,一般来说,在Java/J2EE应用程序中,我们假设key是常量,值可以在以后修改,所以我们创建属性文件(例如存储数据库用户名、密码),我们提出像USER_NAME、password等键。如果需要,可以修改其中的值)。
要简单地从属性文件中读取键和值,可以使用以下代码片段: try {
File file = new File("test.properties");
FileInputStream fileInput = new FileInputStream(file);
Properties properties = new Properties();
properties.load(fileInput);
Enumeration enuKeys = properties.keys();
while (enuKeys.hasMoreElements()) {
String key = (String) enuKeys.nextElement();
String value = properties.getProperty(key);
System.out.println(key + ": " + value);
//you can load here to HashMap which can be retrived later
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
fileInput.close();
}