2012-03-02 18 views
7

bazı sınıf erişilebilir olmadığını varsayalım izin verir ama ulaşılabilir sınıfı tarafından üretilen başka anonim sınıflar vardır. Birincisi Çöp Toplayıcı tarafından kaldırılabilir mi?Java anonim sınıfları ve Çöp Toplayıcı

Örnek: Her olmayan statik iç sınıf dış sınıf örneği örtülü bir rerefence olduğundan


class Outer { 
    public Object getInner() { 
    return new Object() {}; 
    } 
} 

... 

Outer outer = new Outer(); 
Object inner = outer.getInner(); 

// Could the "outer" instance be removed here considering that "inner" is using below? 
+0

Kodunuzda 'Outer' sınıfından bir yöntem çağırıyorsunuz. Orada ulaşılamaz ne olabilir? – Marcelo

cevap

8

Resim dış örneği, yine bu durumda ulaşılabilir.

+0

Buradaki fark, benim örneğimde anonim sınıfın referansını dış sınıfa açık olarak (içten ve dıştan değil) kullanmasıdır. Yani bence aslında dış sınıfa ulaşılamıyor. –

+4

Yine de referansı var. Ve JVM, bu referansın hiçbir zaman kullanılmayacağını bilemez. Bu dış referansı hiç kullanmazsanız, sınıf statik bir iç sınıf veya üst düzey bir sınıf olmalıdır. –

+0

Şimdi netleşiyor. Teşekkür ederim! –