Java anonim iç sınıflar statik yapmak mümkün mü?
Java, iç sınıflar static ya da değil. static, onlar içeren örnek (aynı zamanda iç sınıflar artık yok denilen, iç içe geçmiş sınıflar denir) işaretçi başvuru içermiyor. Başvuru gerekmez zaman bir iç Sınıf static yapmak için unutmadan, çöp toplama veya kaçış analizi ile sorunlara yol açabilir.
Anonim iç sınıf yapmak mümkündür static da? Yoksa derleyici bunu otomatik olarak tüm alt sınıflar olamaz, çünkü, olan rakam nedir?
Eğer isimsiz bir karşılaştırma yaparsam, örneğin, neredeyse hiç dışarıya başvuru gerekir:
Collections.sort(list, new Comparator<String>(){
int compare(String a, String b){
return a.toUpperCase().compareTo(b.toUpperCase());
}
}
CEVAP
Hayır, hayır, derleyici bunu anlayamıyorum. Bu FindBugs sürekli değişiyor anonim iç sınıflar varsa onların örtülü kullanmıyorlar bile static iç içe geçmiş sınıflar adlı öneriyor. this başvuru.
Düzenleme:Tom Teşrifat - tackline anonim sınıfı statik içerik () main yöntemi gibi oluşturulursa, anonim sınıfı aslında diyor ki static. Ama İDEA 20**:
İsimsiz bir sınıf asla
abstract(§8.1.1.1). İsimsiz bir sınıf hep bir iç sınıf (§8.1.3); hiçbir zaman,static(§8.1.1, §8.5.1) bu. İsimsiz bir sınıf her zaman örtülü olarak.final(§8.1.1.2).
Roedy Green Java Sözlüğü says that anonim sınıfları statik bir çerçevede izin verilir gerçeğini uygulaması bağımlıdır:
İstiyorsanız bu bölme bakımı kodunuzu, kuyruk sallayan var keşfetti
javac.exeizin alacak anonim sınıflar içindestaticbaşlatma Kodu vestaticyöntem olsa bile, dil spec diyor daha anonim sınıflar aslastatic. Bu isimsiz sınıfları, tabii ki, nesnenin örnek alanlar için erişim yok. Bunu tavsiye etmiyorum.özelliğiherhangi bir zamanda çekilmiş olabilir.
Edit 2:Bu İDEA aslında daha açık bir şekilde statik içerikleri §15.9.2 kapakları:
İzin verinCsınıf örneği olmak, ve izin verinbenörnek yaratılıyor. EğerCbir iç sınıfbenhemen örneğini kapsayan bir. Hemen çevreleyen örneğiben(§8.1.3) aşağıdaki gibi belirlenir.
- EğerCanonim bir sınıf, sonra:
- Eğer sınıf örneği oluşturma ifade statik içerik (madde 8.1.3) oluşursa, o zamanbenhayır hemen örnek vardır çevreleyen.
- Aksi takdirde, hemen kapsayan bir örnekben
this.
Bir anonim sınıfta bir statik içerik kabaca eşdeğer bir static iç içe geçmiş bir sınıf değil tutmak için bir referans kapsayan sınıf, olsa da teknik olarak değil static sınıf.

Neden Java statik olarak bir sınıf bil...
Java Statik Sınıflar...
Bunu PHP statik sınıflar oluşturmak mü...
Python soyut sınıflar yapmak mümkün mü...
Nasıl Java Genel bir yöntem statik yap...