मैं एक सामान्य कार्य लिखने की कोशिश कर रहा हूं जो किसी भी enum को स्वीकार करेगा, और मूल्यों को एक ड्रॉप डाउन में उपयोग के लिए मानचित्र में डाल देगा।जावा में जेनेरिक एनम पैरामीटर। क्या यह संभव है?
यह मेरे पास अब तक है, (एक विशिष्ट enum के लिए), क्या मेरे फ़ंक्शन enumToMap को आम तौर पर किसी भी enum प्रकार को स्वीकार करने के लिए लिखा जा सकता है?
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
private enum testenum{
RED,BLUE,GREEN
}
private static Map enumToMap(testenum e){
HashMap result = new HashMap();
List<testenum> orderReceiptKeys = Arrays.asList(e.values());
List<String> orderReceiptValues = unCapsCase(orderReceiptKeys);
for(int i=0;i<orderReceiptKeys.size();i++){
result.put(orderReceiptKeys.get(i), orderReceiptValues.get(i));
}
return result;
}
/**
* Converts a string in the form of 'TEST_CASE' to 'Test case'
* @param s
* @return
*/
private static String unCapsCase(String s){
StringBuilder builder = new StringBuilder();
boolean first=true;
for(char c:s.toCharArray()){
if(!first)
c=Character.toLowerCase(c);
if(c=='_')
c=' ';
builder.append(c);
first=false;
}
return builder.toString();
}
/**
* Converts a list of strings in the form of 'TEST_CASE' to 'Test case'
* @param l
* @return
*/
private static List<String> unCapsCase(List l){
List<String> list = new ArrayList();
for(Object o:l){
list.add(unCapsCase(o.toString()));
}
return list;
}
public static void main(String[] args) throws Exception {
try{
testenum e=testenum.BLUE;
Map map = enumToMap(e);
for(Object k:map.keySet()){
System.out.println(k.toString()+"=>"+map.get(k));
}
}catch(Exception e){
e.printStackTrace();
}
}
}
किसी भी सुझाव के लिए धन्यवाद।
बिल्कुल सही! बहुत बहुत धन्यवाद। – Chris
@Chris: अगर यह आपके प्रश्न का उत्तर देता है तो कृपया चेक के साथ जवाब स्वीकार करें। धन्यवाद! =) – ColinD
मुझे getEnumConstants() +1 नहीं पता था – Wooff