Java反射将属性映射到对象



我得到了下面的源代码来映射属性文件到我的对象。

    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();
      }

相关内容

  • 没有找到相关文章

最新更新