Java statik iç içe geçmiş bir sınıf, neden? | Netgez.com
SORU
31 EKİM 2008, Cuma


Java statik iç içe geçmiş bir sınıf, neden?

LinkedList Java kod bakıyordum ve statik iç içe geçmiş bir sınıf, Entry kullanımı yapılmış olduğunu fark ettim.

public class LinkedList<E> ... {
...

 private static class Entry<E> { ... }

}

Statik iç içe geçmiş bir sınıf, normal bir iç sınıf yerine kullanmanın nedeni nedir?

Tek sebebi aklıma gelen, Giriş örnek değişkenleri erişim yok, bakış OOP açısından daha iyi saklama böylece.

Ama başka nedenler de performans olabileceğini düşündüm. Ne olabilir?

Not. Şartlarımı düzeltmek zorundayım umarım, bu statik bir iç sınıf arardım, ama bu yanlış olduğunu düşünüyorum: http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html

CEVAP
31 EKİM 2008, Cuma


Bağlantı Güneş sayfası, ikisi arasında bazı önemli farklılıklar vardır:

İç içe geçmiş bir sınıfı çevreleyen sınıfın bir üyesi. Statik olmayan iç içe sınıflar (iç sınıflar) özel ilan olsa bile kapsayan bir sınıfın diğer üyeleri erişebilir. Statik iç içe sınıfları kapsayan sınıfın diğer üyeleri için erişim hakkınız yok.
...

Not: sadece üst düzey başka bir sınıf gibi dış sınıf örneği üyeleriyle statik iç içe sınıf Bir etkileşim (ve diğer sınıflar).Sonuç olarak, statik iç içe geçmiş bir sınıf davranışsal olarak üst düzey bir sınıf iç içe olmuştur üst düzey bir Sınıf Paketleme kolaylık sağlamak için.

LinkedList.Entry gibi üst düzey sınıf için gerek yoksadeceLinkedList (statik de iç içe geçmiş sınıflar Map.Entry - aynı kavram gibi ** 6, adlı başka şekilleri de vardır) tarafından kullanılır. Ve LinkedList üyeleri için erişim gerekmez beri, statik olmak için mantıklı - daha temiz bir yaklaşım.

Jon Skeet points out, bence daha iyi bir fikir kullanıyorsanız, bir iç içe geçmiş sınıf için başlamak ile olan statik ve sonra karar ver Eğer gerçekten gerekli olmayan statik tabanlı kullanımı.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • disneychannel

    disneychanne

    19 ÅžUBAT 2006
  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • Wii Minute Radio

    Wii Minute R

    31 Mayıs 2008