2012-07-26 23 views
7

यह एक अजीब सवाल की तरह लग सकता है लेकिन एक सामान्य को परिभाषित करने के लिए कैसे एक कक्षा को विस्तारित करना और इंटरफेस को कार्यान्वित करना है? वर्तमान में निम्नलिखित प्रोटोटाइप के साथ एक सामान्य कार्य है:जेनेरिक विस्तार कक्षा और कार्यान्वयन इंटरफ़ेस

public static <E extends Enum<E>> List<E> buildEnumList(Class<E> enumClass) 

यह केवल इरादे से काम करता है। मेरी समस्या यह है कि मैं उन योग्य वर्गों को उन लोगों तक सीमित करना चाहता हूं जो कि enums हैं और एक विशिष्ट इंटरफ़ेस Readable लागू करें (java.lang में नहीं)। के बाद से एक सामान्य संकेत मिलता है कि यह एक अंतरफलक को लागू करना चाहिए एक ही कीवर्ड extends का उपयोग करता है, मैं न निम्नलिखित छद्म व्यवहार प्राप्त करने के लिए किसी भी तरह से देखें:

public static <E extends Enum<E> implements Readable> List<E> buildLexicographicalEnumList(Class<E> enumClass) 

उत्तर

13

आप & उपयोग कर सकते हैं संकेत मिलता है कि E भी एक अंतरफलक को लागू करना चाहिए:

public static <E extends Enum<E> & Readable> List<E> buildLexicographicalEnumList(Class<E> enumClass) { 
+0

एक कॉमा का उपयोग उन्हें अलग करने के लिए भी किया जा सकता है। – corsiKa

+0

@corsiKa मैंने ऐसा भी सोचा लेकिन इसे [जेएलएस में] नहीं मिला [http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.4)। हालांकि यह संकलन करने के लिए करता है। – assylias

+0

अब मुझे चिंतित है कि वे वास्तव में दो अलग-अलग चीजें करते हैं ... :-( – corsiKa