SORU
15 Aralık 2011, PERŞEMBE


java - vmspec - arasındaki fark nedir <ınit> ve <clinit>

Java <init> <clinit> arasındaki fark nedir ?

Aşağıdaki metni anlamak için kuramıyorum... <clinit> boş kurucular için olduğu anlamına Mı geliyor? Neden önemli iki farklı versiyonu var mı?

http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html#12174

3.9 Specially Named Initialization Methods

Java sanal makine düzeyinde, her bir kurucu (§2.12) olan örnek bir başlatma yöntemi olarak görünür Özel ad <init>. Bu adı bir derleyici tarafından sağlanır. Çünkü adı <init> geçerli bir tanımlayıcı değil, doğrudan kullanılamaz program Java programlama dili ile yazılmış. Örneği başlatma yöntemleri Java sanal içinde çağırılacak invokespecial talimatı ile makine, ve sadece çağrılan olabilir başlatılmamış sınıf örnekleri. Örnek bir başlatma yöntemi yapıcı olan erişim izinleri (madde 2.7.4) alır türetilmiş oldu.

Bir sınıfın en fazla bir sınıf veya arabirim başlatma yöntemi vardır ve başlatıldı (§2.17.4) çağırarak. yöntem. Bir sınıf veya arabirim başlatma yöntemi statik ve herhangi bir argüman alır. 8* *özel bir ada sahip. Bu ismi bir derleyici tarafından sağlanan. Çünkü adı <clinit> geçerli değil tanımlayıcı, doğrudan bir program yazılmış kullanılamaz Programlama dili Java. Sınıf ve arayüz başlatma yöntemleri örtülü olarak Java sanal makinesi tarafından çağrılır; asla onlar doğrudan herhangi bir Java sanal makinesi inw2struction, ama çağrılan sadece dolaylı olarak sınıf başlatma işleminin bir parçası olarak çağrılan.

CEVAP
15 Aralık 2011, PERŞEMBE


<init> (veya birini) kurucu(lar) örneği için, statik olmayan alanı başlatma.

<clinit> statik başlatma blokları sınıfı için ve statik alan başlatma.

class X {

   static Log log = LogFactory.getLog(); // <clinit>

   private int x = 1;   // <init>

   X(){
      // <init>
   }

   static {
      // <clinit>
   }

}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • CMTelly

    CMTelly

    2 Mayıs 2007
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006