यह प्रश्न मूल रूप से मेरे previous question का विस्तार है। मैंने पिछले प्रश्न से यह सुनिश्चित करने के लिए कहा कि वर्ग लोड होने पर एनम स्थिरांक आबादी वाले होते हैं। यहाँ मेरी कक्षा एक सरल विधि getByName
के अलावा के साथ फिर से है:java.lang.IllegalArgumentException का कारण क्या है: मूल्यों के माध्यम से पुनरावृत्ति होने के बावजूद कोई enum const class() ठीक काम करता है?
public enum PropName {
CONTENTS("contents"),
USE_QUOTES("useQuotes"),
ONKEYDOWN("onkeydown"),
BROWSER_ENTIRE_TABLE("browseEntireTable"),
COLUMN_HEADINGS("columnHeadings"),
PAGE_SIZE("pageSize"),
POPUP_TITLE("popupTitle"),
FILTER_COL("filterCol"),
SQL_SELECT("sqlSelect"),
;
private String name;
private PropName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public static PropName getByName(String name){
return PropName.valueOf(name);
}
}
एक कॉल विधि getByName("columnHeadings")
करने के लिए java.lang.IllegalArgumentException: No enum const class labware.web.component.limsgrid.PropName.columnHeadings
फेंक रहा है, लेकिन अगर मैं निम्न कोड के साथ इस पद्धति की जगह यह सिर्फ काम करता है।
public static PropName getByName(String name){
for(PropName prop : values()){
if(prop.getName().equals(name)){
return prop;
}
}
throw new IllegalArgumentException(name + " is not a valid PropName");
}
कोई विचार क्या मैं यहां गलत कर रहा हूं?
आपको वास्तव में अपने नाम में "नाम" नाम की एक संपत्ति को परिभाषित नहीं करना चाहिए। आपके पास नाम() और getName() अलग-अलग मान लौटाएंगे ... –