Tôi đã xác định Enums của mình như thế này.Cách dễ nhất để đưa Enum vào cặp Giá trị chính
public enum UserType {
RESELLER("Reseller"),
SERVICE_MANAGER("Manager"),
HOST("Host");
private String name;
private UserType(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Cách dễ nhất để có được cặp khóa-giá trị tạo thành giá trị enum là gì?
Bản đồ đầu ra tôi muốn tạo nên như thế này
key = Enum(example:- HOST)
value = Host
Bản đồ Tôi muốn làm xác định là
Map<String, String> constansts = new HashMap<String, String>();
Ans: Điều gì I Did
tôi đã tạo ra một Generic Phương thức truy cập bất kỳ enum nào và thay đổi các giá trị từ đó thành Map. Tôi đã nhận IDEA này, tạo thành một đoạn mã được tìm thấy tại đây trong bất kỳ chủ đề nào khác.
public static <T extends Enum<T>> Map<String, String> getConstantMap(
Class<T> klass) {
Map<String, String> vals = new HashMap<String, String>(0);
try {
Method m = klass.getMethod("values", null);
Object obj = m.invoke(null, null);
for (Enum<T> enumval : (Enum<T>[]) obj) {
vals.put(enumval.name(), enumval.toString());
}
} catch (Exception ex) {
// shouldn't happen...
}
return vals;
}
Bây giờ, sau tất cả những gì tôi phải làm là gọi phương thức này với tất cả các cấu trúc enum và tôi đã xong.
One More điều
Để này làm tôi phải orverride Phương pháp toString như
public String toString() {
return name;
}
Cảm ơn này.
nào bạn muốn enum hoặc chuỗi để là chìa khóa? – Carl
thay vì tất cả các công cụ phản ánh, bạn chỉ có thể làm 'klass.getEnumConstants()' – user102008