如何在属性文件中指定值,以便可以使用ResourceBundle#getStringArray检索它们?

Gra*_*ner 31 java resourcebundle

我试图用来从属性文件中ResourceBundle#getStringArray检索一个String[].文档中对此方法的描述如下:

从此资源包或其父项之一获取给定键的字符串数组.

但是,我尝试将值作为多个单独的键/值对存储在属性文件中:

key=value1
key=value2
key=value3
Run Code Online (Sandbox Code Playgroud)

并以逗号分隔的列表:

key=value1,value2,value3
Run Code Online (Sandbox Code Playgroud)

但这些都不是可以使用的ResourceBundle#getStringArray.

如何在属性文件中表示一组键/值对,以便可以使用它们进行检索ResourceBundle#getStringArray

Rob*_*ker 32

一个Properties对象可以容纳Objects,而不仅仅是Strings.这往往被遗忘,因为它们绝大多数用于加载.properties文件,因此通常只包含Strings.文档表明调用bundle.getStringArray(key)等同于调用(String[]) bundle.getObject(key).这就是问题:价值不是a String[],它是a String.

我建议以逗号分隔的格式存储它并调用split()该值.

  • 谢谢,您提供的答案是我所怀疑的。我已经使用split()实现了某些东西,只是希望可以利用类库中已有的东西,而不是自己动手做。 (2认同)

Joã*_*lva 7

您可以使用共享配置,它拥有一些方法getListgetStringArray允许您检索逗号分隔字符串列表.


Chr*_*ton 5

嗯,从这里这里的线程看来,这似乎是一个普遍的问题。

似乎您不是自己使用该方法并自己解析数组的值,还是您编写了自己的ResourceBundle实现并自己进行了:(。也许为此有一个Apache Commons项目...

从JDK源代码看来,PropertyResourceBundle不支持它。