java.util.Properties中的多个值

Clu*_*nus 36 java properties

似乎java.util.Properties假设每个propery键一个值.那是,

foo=1
foo=2
Run Code Online (Sandbox Code Playgroud)

没想到,

是否有这类多值属性表的类,它还提供了加载方法?

Nic*_*olt 65

尝试:

foo=1,2

String[] foos = properties.getProperty("foo").split(",");
Run Code Online (Sandbox Code Playgroud)

  • 如果找不到属性foo,上面的行将抛出NullPointerException.因此,如果需要该属性,请确保检查属性是否存在或捕获/抛出异常.如果属性是可选的,则properties.getProperty("foo","").split(",")可能是更安全的替代方案. (10认同)
  • @ lee-theobald:让你的属性类成为一个Groovy类,你可以这样做:`String [] foos = properties.getProperty("foo")?. split(",")`和foo将为null而不是得到一个NPE :) (2认同)

ZZ *_*der 20

java.util.Properties函数非常有限.如果您需要支持列表,可能需要从Apache Commons Configuration尝试PropertyConfiguration,

http://commons.apache.org/configuration/userguide/howto_properties.html#Using_PropertiesConfiguration

有了它,您可以将任何分隔符设置为列表,它将自动分割.您还可以在属性文件中执行其他奇特的操作.例如,

foo=item1, item2
bar=${foo}, item3
number=123
Run Code Online (Sandbox Code Playgroud)

你可以像这样检索它,

Configuration config = new PropertiesConfiguration("your.properties");
String[] items = config.getStringArray("bar"); // return {"item1", "item2", "item3"}
int number = config.getInt("number", 456); // 456 is default value
Run Code Online (Sandbox Code Playgroud)