我有以下源代码将属性文件映射到我的Object。
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;
}
这是一种很好的"映射方法"在我的源代码中避免硬编码" Key" -String?你可能还有其他想法吗?
答案 0 :(得分:0)
你使事情变得复杂,一般来说,在Java / J2EE应用程序中,我们假设KEYS是常量,值可以在以后修改,所以我们创建属性文件(例如存储数据库用户名,密码,我们提出了像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();
}