Java - bu Sızıntı kurucu
(En) 6.9.1, ve 'Leaking this in constructor'
uyarı ile ilgili bir sorun var Eclipse uyarıları önlemek için istiyorum.
Sorun, yapıcı bir yöntem arayıp," "this
" tam olarak başlatılmadı. beri tehlikeli. "this
geçen anlıyorum
Kolay yapıcı özel ve sadece aynı sınıftan denir, çünkü tek derslerimi uyarı düzeltmek için.
(Basit) eski kod:
private Singleton() {
...
addWindowFocusListener(this);
}
public static Singleton getInstance() {
...
instance = new Singleton();
...
}
Yeni kod (basit):
private Singleton() {
...
}
public static Singleton getInstance() {
...
instance = new Singleton();
addWindowFocusListener( instance );
...
}
Bu düzeltme ise kurucu ortak ise çalışmıyor ve diğer sınıflardan çağrılabilir. Nasıl aşağıdaki kodu çözmek için mümkün:
public class MyClass {
...
List<MyClass> instances = new ArrayList<MyClass>();
...
public MyClass() {
...
instances.add(this);
}
}
Elbette tüm kodlarımı bu sınıf ( örneğin init yöntemini çağırarak) kullanarak değiştirmek için gerektirmeyen bir düzeltme istiyorum.
CEVAP
Emin ** 10 oluşturucu sonunda koymak için yapmak beri
Eğer ne yaptığınızı biliyorsanız @SuppressWarnings
bir açıklama kullanabilirsiniz. Terrel yorumlarda da belirtildiği gibi, aşağıdaki ek açıklama Eclipse 6.9.1 olarak yapıyor
@SuppressWarnings("LeakingThisInConstructor")
(*) Güncelleme:İsthar ve Sergey "kod oluşturucu tamamen güvenli (soru gibi görünebilir ama değil." sızıntı durumlar vardır belirttiği gibi Bu onaylamak için daha fazla okuyucu var mı? Belirtilen nedenlerden dolayı bu cevabı silme düşünüyorum.
Nasıl Java başka bir kurucu arayayım m...
Java hata: Örtülü süper oluşturucu var...
Java varsayılan kurucu...
Kurucu Java dizileri - en iyi uygulama...
Java "-by pass-başvuru" veya...