2015-03-31 3 views
5

मैं हाल ही में कुछ इस तरह में भाग से अभिभावकीय कक्षा पहुंच रहा है ...हल अस्पष्टता जब बेनामी कक्षा

public final class Foo<T> 
implements Iterable<T> { 

    //... 

    public void remove(T t) { /* banana banana banana */ } 

    //... 

    public Iterator<T> Iterator { 
     return new Iterator<T>() { 

      //... 

      @Override 
      public void remove(T t) { 
       // here, 'this' references our anonymous class... 
       // 'remove' references this method... 
       // so how can we access Foo's remove method?   
      } 

      //... 

     }; 
    } 
} 

वहाँ क्या मैं जबकि एक अनाम वर्ग के रूप में इस रखने के लिए कोशिश कर रहा हूँ करने के लिए कोई रास्ता नहीं है? या क्या हमें एक आंतरिक कक्षा या कुछ और उपयोग करना है?

+0

संभावित डुप्लिकेट [आंतरिक वर्ग वस्तु से बाहरी वर्ग वस्तु को पकड़ना] (http://stackoverflow.com/questions/1816458/getting-hold-of-the-outer-class-object-from-the-the-outer-class-object-from-the- -इनर-क्लास-ऑब्जेक्ट) – Raedwald

उत्तर

7

आप Classname.this का उपयोग करके संलग्न कक्षा तक पहुंच सकते हैं। तो अपने उदाहरण में:

public void remove(T t){ 
    Foo.this.remove(t); 
} 
2

Foo.this.remove (टी) चाल करना होगा तुम्हारे लिए।

+5

पहले से ही वही उत्तर हैं। एक डुप्लिकेट पोस्ट करने के बजाय कृपया उन्हें ऊपर उठाएं। –

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