आपके पास enum
कोई अन्य enum
का विस्तार नहीं कर सकता है, और आप मौजूदा enum
को विरासत के माध्यम से मान "जोड़" नहीं सकते हैं।
हालांकि, enum
एस interface
एस लागू कर सकते हैं।
मैं क्या करना होगा क्या मूल enum
एक मार्कर interface
(अर्थात् कोई विधि घोषणाओं) को लागू किया है, तो अपने ग्राहक एक ही interface
को लागू करने के लिए अपने स्वयं enum
बना सकते हैं।
फिर आपके enum
मानों को उनके सामान्य interface
द्वारा संदर्भित किया जाएगा।
आवश्यकताओं को मजबूत करने के लिए, आप अपने इंटरफेस को प्रासंगिक तरीकों की घोषणा कर सकते हैं, उदा। आपके मामले में, public String getHTTPMethodType();
की पंक्तियों में कुछ।
जो उस विधि के लिए कार्यान्वयन प्रदान करने के लिए enum
एस लागू करने के लिए मजबूर करेगा।
यह सेटिंग पर्याप्त एपीआई दस्तावेज के साथ मिलकर अपेक्षाकृत नियंत्रित तरीके से कार्यक्षमता जोड़ने में मदद करनी चाहिए।
स्व निहित उदाहरण (यहाँ आलसी नाम कोई आपत्ति नहीं है)
package test;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<HTTPMethodConvertible> blah = new ArrayList<>();
blah.add(LibraryEnum.FIRST);
blah.add(ClientEnum.BLABLABLA);
for (HTTPMethodConvertible element: blah) {
System.out.println(element.getHTTPMethodType());
}
}
static interface HTTPMethodConvertible {
public String getHTTPMethodType();
}
static enum LibraryEnum implements HTTPMethodConvertible {
FIRST("first"),
SECOND("second"),
THIRD("third");
String httpMethodType;
LibraryEnum(String s) {
httpMethodType = s;
}
public String getHTTPMethodType() {
return httpMethodType;
}
}
static enum ClientEnum implements HTTPMethodConvertible {
FOO("GET"),BAR("PUT"),BLAH("OPTIONS"),MEH("DELETE"),BLABLABLA("POST");
String httpMethodType;
ClientEnum(String s){
httpMethodType = s;
}
public String getHTTPMethodType() {
return httpMethodType;
}
}
}
आउटपुट
first
POST
इस उपयोगी होगा http://stackoverflow.com/a/478431/3138755 – Rahul
Enums अच्छे होते हैं जब आप निश्चित रूप से ज्ञात-आगे संभावित मानों की संख्या पर निश्चित रूप से निश्चित होते हैं।यदि आप इसे विस्तारित करने की अपेक्षा करते हैं, तो संभवतः आपको कभी भी एनम का उपयोग नहीं करना चाहिए, और इस विषय की समीक्षा करें कि आपके वर्तमान enum को डिज़ाइन किया गया है और शायद इसे एक अच्छी तरह से डिज़ाइन किए गए इंटरफ़ेस को लागू करने वाले वर्गों के पक्ष में छोड़ दें। –