2012-06-09 8 views
11
interface A<T> { 

    interface B { 
     // Results in non-static type variable T cannot 
     // be referenced from a static context 
     T foo(); 
    } 

} 

क्या वैसे भी इस दौर में है? एबी से संदर्भित होने पर टी को स्थिर के रूप में क्यों देखा जाता है?जावा जेनरिक: गैर स्थैतिक प्रकार परिवर्तनीय टी को एक स्थिर संदर्भ से संदर्भित नहीं किया जा सकता है

+0

@ बेशगुरुंग हां - जानबूझकर। – auser

+0

संबंधित: http://stackoverflow.com/a/74400/697449 –

उत्तर

7

इंटरफेस के सभी सदस्य फ़ील्ड डिफ़ॉल्ट रूप से public, static और final हैं।

चूंकि आंतरिक इंटरफ़ेस डिफ़ॉल्ट रूप से static है, इसलिए आप स्थिर फ़ील्ड या विधियों से T का संदर्भ नहीं दे सकते।

क्योंकि T वास्तव में, एक वर्ग का एक उदाहरण के साथ जुड़ा हुआ है, तो वह एक स्थिर क्षेत्र या विधि है जो वर्ग के साथ जुड़ा हुआ है तो यह कोई मतलब

+1

धन्यवाद, जो प्रश्न के पहले भाग का जवाब देता है। मैं इंटरफ़ेस इंटरफ़ेस में टाइप किए गए इंटरफ़ेस के समान प्रकार के प्रकार को कैसे प्राप्त करूं? – auser

+2

मैं पहली वाक्य को हटा दूंगा क्योंकि यह अनावश्यक और भ्रामक है - हाँ इंटरफ़ेस फ़ील्ड पूरी तरह से 'सार्वजनिक स्थिर अंतिम' हैं लेकिन इसे इंटरफ़ेस * विधियों * के साथ करना है जो स्पष्ट रूप से 'सार्वजनिक सार' हैं। तथ्य यह है कि आंतरिक इंटरफेस पूरी तरह से 'स्थैतिक' हैं, यह महत्वपूर्ण है। –

+0

अच्छी आंतरिक इंटरफ़ेस आंतरिक क्षेत्र के समान है –

1

नहीं होगा के साथ जुड़े थे कैसे कुछ इस तरह के बारे में।

public interface A<T> { 

    interface B<T> extends A<T>{ 

     T foo(); 
    } 

} 
संबंधित मुद्दे

 संबंधित मुद्दे