2014-09-14 12 views
13

मुझे समझ में नहीं आ रहा है कि यह क्यों संकलित करता है। मैंने विभिन्न प्रारूपों के साथ प्रयास किया है और वे सभी काम करने लगते हैं ..क्यों enum.. en enum enum की अनुमति है?

enum of enum of enum of.. क्यों होना वैध है?

interface I { 

    enum E implements I { 
     VAL; 
    } 

    class Test { 
     I.E   f1 = I.E.VAL; 
     I.E.E  f2 = I.E.VAL; 
     I.E.E.E  f3 = I.E.VAL; 
     I.E.E.E.E.E f4 = I.E.VAL; 

     I.E v1 = I.E.VAL; 
     I.E v2 = I.E.E.VAL; 
     I.E v3 = I.E.E.E.E.E.E.VAL; 
     I.E v4 = I.E.E.E.E.E.E.E.E.E.E.VAL; 
    } 
} 

मेरे आईडीई तब भी वह अच्छे संकलित जानकारी दी है, हालांकि I.E.E मेरे लिए कोई मतलब नहीं है।

उत्तर

11

आपका I इंटरफ़ेस में E नामक एक एनम प्रकार होता है।

यह प्रकार उसी I इंटरफ़ेस को लागू करता है, इसलिए यह उस इंटरफ़ेस में सबकुछ प्राप्त करता है।
इसमें E स्वयं शामिल है।

दूसरे शब्दों में, I.E.EI.E तक पहुँचने के रूप में बाहरी I से E द्वारा विरासत में मिली है।

+0

जावा * * इंटरफेस के लिए विरासत नियमों को सरल बना सकता था। इस नियम का लाभ लेना शायद ही कभी कोई समझ में आता है (यहां तक ​​कि अनंत पुनरावृत्ति के बिना भी)। –

+0

@ मार्कोटोपॉलिक: आप कक्षाओं के साथ भी ऐसा कर सकते हैं। – SLaks

+1

यहां पर कोई अनंत रिकर्सन नहीं चल रहा है। – specializt