언어를 변경할 가능성이있는 간단한 프로그램을 만들고 문자열 배열의 파일 myBundle.properties에있는 속성 목록을 변환합니다. Java Enumeration이 속성 목록을 순서대로 반환하지 않는 이유는 무엇입니까?
이
는 파일 myBundle.properties입니다 :#default
test1=Hello1
test2=Hello2
test3=Hello3
test4=Hello4
test5=Hello5
test6=Hello6
그리고 이것은 자바 코드이다 : 나는이 프로그램을 실행할 때 캐주얼 나에게 문자열을 반환 놀랍게도
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();
}
}
그러나 주문. Enumeration이 이상한 동작을하는 이유는 무엇입니까?
bash-4.1$ java BundleTest
test1
test6
test4
test5
test2
test3
을하는 데 도움이됩니다. Vector의 javadoc을 체크 아웃하면 지원되는 대안을 찾을 수 있습니다. (문제를 골라서 죄송합니다.) – BlackVegetable
'ResourceBundle.getKeys()'는 * ordered * 열거 형을 어디에서 반환합니까? Thsi는 Enumeration과 아무 관련이 없지만 그 뒤에있는 소스는 아마도 Set 일 것이고 따라서 순서를 유지하지 않을 것입니다. –