如何在java中使用默认值构造属性列表?

时间:2015-07-18 09:22:12

标签: java properties

此代码:

import java.util.Properties;
public class P {
    public static void main(String[] args) {
        Properties defaultProperties=new Properties();
        defaultProperties.put("a",1);
        System.out.println("default: "+defaultProperties);
        Properties properties=new Properties(defaultProperties);
        System.out.println("other: "+properties);
    }
}

打印:

default: {a=1}
other: {}

在eclipse luna中使用java 8。

如何使用默认值构建属性列表?

3 个答案:

答案 0 :(得分:3)

您使用defaultProperties.put()代替defaultProperties.setProperty()。因此,你的" a"不被视为财产。

所以请改用:

defaultProperties.setProperty("a", "1");

properties对象仍然会打印为空(这是new Properties(Properties defaults)构造函数is supposed to do!)但是如果您使用:

System.out.println(properties.getProperty("a"));

你会看到你得到" 1"。

答案 1 :(得分:3)

您的代码有两个问题。

  1. 使用get()put()时,默认属性无效。
  2. 您需要执行setProperty()和' getProperty()`。

    1. 打印属性文件时,它不会包含默认属性。 toString()方法并不那么复杂。
    2. 请改用:

      Properties defaultProperties=new Properties();
      defaultProperties.setProperty("a","s");
      System.out.println("default: "+defaultProperties);
      Properties properties=new Properties(defaultProperties);
      System.out.println("other: "+properties.getProperty("a"));
      

答案 2 :(得分:0)

您可以使用put()方法,但使用String作为值:

$imageField = UploadField::create('ImageEvenement', 'Image');
$imageField->setAllowedFileCategories('image');
$imageField->setAllowedMaxFileNumber(1);

我知道签名是:properties.put("a","1");

但是

Object java.util.Hashtable.put(Object key, Object value)

如果该值不是String类型,则此函数返回null。

结束:

public String getProperty(String key) {
    Object oval = super.get(key);
    String sval = (oval instanceof String) ? (String)oval : null;
    return ((sval == null) && (defaults != null)) ? defaults.getProperty(key) : sval;
}