言語を変更できる単純なプログラムを作成しています。ファイル myBundle.properties のプロパティのリストを文字列配列に変換します。
これはファイル myBundle.properties です:
#default
test1=Hello1
test2=Hello2
test3=Hello3
test4=Hello4
test5=Hello5
test6=Hello6
そして、これはJavaコードです:
import java.util.*;
class BundleTest {
BundleTest() {
String[] s = returnStringArray(Locale.ENGLISH);
for(int i=0; i<s.length; i++) {
System.out.println(s[i]);
}
}
private String[] returnStringArray(Locale language) {
try {
ResourceBundle labels = ResourceBundle.getBundle("myBundle", language);
Enumeration<String> keys = labels.getKeys();
Vector v = new Vector();
String key = null;
while (keys.hasMoreElements()) {
v.add(keys.nextElement());
}
String[] s = new String[v.size()];
for(int i=0; i<s.length; i++) {
s[i] = (String)v.elementAt(i);
}
return s;
} catch (MissingResourceException mre) {
System.out.println("Risorse della lingua non trovate!");
return null;
}
}
public static void main(String[] args) {
new BundleTest();
}
}
しかし、驚くべきことに、プログラムを実行すると、文字列がランダムな順序で返されます。列挙型がこの奇妙な動作をするのはなぜですか?
bash-4.1$ java BundleTest
test1
test6
test4
test5
test2
test3