SORU
29 Kasım 2009, Pazar


Alma iç sınıf nesnesinin dış sınıf nesnesi tutun

Aşağıdaki kodu var. Dış sınıf nesnesi iç sınıf nesnesi inner oluşturulan kullanarak ele almak istiyorum. Bunu nasıl yapabilirim?

public class OuterClass {

    public class InnerClass {
    	private String name = "Peakit";
    }

    public static void main(String[] args) {
    	OuterClass outer = new OuterClass();
    	InnerClass inner = outer.new InnerClass();
       // How to get the same outer object which created the inner object back?
    	OuterClass anotherOuter = ?? ;

        if(anotherOuter == outer) {
             System.out.println("Was able to reach out to the outer object via inner !!");
        } else {
             System.out.println("No luck :-( ");
        }
    }
}

DÜZENLEME:Evet, bazılarınız bir yöntem ekleyerek iç sınıf değiştirme önerilen:

public OuterClass outer() {
   return OuterClass.this;
}

Ama ne olursa iç sınıf değiştirmek için kontrol yok eğer doğru değilse, o zaman (sadece onaylamak için) ilgili dış sınıf almanın başka bir yolu var mı iç sınıf nesnesinin nesne?

CEVAP
29 Kasım 2009, Pazar


İç sınıf kendi içinde, OuterClass.this kullanabilirsiniz.

Bilmiyorumdüşünüyorumiç sınıf kodu dışardan bakan ama almak için bir yol var. Tabii ki, her zaman kendi işletmenizi tanıtabilirsiniz:

public OuterClass getOuter() {
    return OuterClass.this;
}

EDİT: deney, alan gibi dış sınıf paket düzeyinde erişimi olan - en azından ben kullanıyorum FIRSATLAR ile başvurusunu holding görünüyor.

EDİT: adı (this$0)aslında JLS kullanımını teşvik etmemektedir, ancak Java içinde geçerli:

$ karakter sadece kullanılmalıdır mekanik kod veya kaynak tarafından oluşturulan nadiren, önceden var olan isimleri erişmek için eski sistemler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • Metheud

    Metheud

    9 EYLÜL 2006
  • Watcher3223

    Watcher3223

    15 Kasım 2007