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
İç 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.
@sınıf vs alma...
Python sınıf nesnesi için bir dize dön...
Ruby delilik: Sınıf Nesnesi vs?...
Objective-C sınıf adı NSString nesnesi...
Nasıl ActionScript 3'te bir Sınıf nesn...