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

  • RawBrahs

    RawBrahs

    28 Aralık 2010
  • Chaîne de TheMoustic

    Chaîne de T

    5 Kasım 2006
  • xXGAMERrs_Xx

    xXGAMERrs_Xx

    31 Temmuz 2014