SORU
25 ŞUBAT 2010, PERŞEMBE


Java: bir dosya içinde Birden fazla sınıf bildirimleri

Java, tek bir dosya içinde birden fazla üst düzey sınıflar, en fazla bunlardan biri kamu (JLS §7.6) verilmek tanımlayabilirsiniz. Örnek için aşağıya bakın.

  1. Bu tekniği düzenli bir ad (inner, nested, anonymousbenzer)var?

  2. Bu İDEA sistemi diyorolabilirbu ikincil sınıflar paket-özel olarak tedavi edilebilir mi referred to by code in other compilation units of the package, örneğin, olabilir mi bu kısıtlamayı zorlar. Gerçekten Java uygulamaları arasındaki değişiklikleri bir şey mi?

örneğin, PublicClass.java:

package com.example.multiple;

public class PublicClass {
    PrivateImpl impl = new PrivateImpl();
}

class PrivateImpl {
    int implementationData;
}

CEVAP
25 ŞUBAT 2010, PERŞEMBE


javac değil aktif olarak bu yasaklar, ama öyle bir sınırlama oldukça anlamına asla istiyorum başvurmak için bir üst düzey sınıftan başka bir dosya sürece aynı adı taşıyan dosya var.

İki dosya, Foo.java ve Bar.java olduğunu varsayalım.

İçerir Foo.java :

  • public class Foo

İçerir Bar.java :

  • public class Bar
  • sınıf Baz

Umalım da tüm sınıfları aynı pakette (ve dosyaları aynı dizinde).

Foo.java ama Baz Bara gelir ve foo.java derlemeye çalışırsak ne olur? Derleme böyle bir hata ile başarısız olur

Foo.java:2: cannot find symbol
symbol  : class Baz
location: class Foo
  private Baz baz;
          ^
1 error

Bu eğer düşünürsen mantıklı. Foo.java Baz anlamına gelir, ama Baz.java (veya) Baz.class yok eğer, nasıl javac bak ne biliyorsunuz?

Eğer yerine söylersen aynı zamanda Foo.java ve Bar.java derlemek için javac, ya da eğer daha önce bar.java (javac bulamayacağı bir yere, baz.class terk) derlenmiş olsaydı o zaman bile bu hata gider. Bu inşa süreci çok güvenilmez hissediyorum ve lapa lapa, ancak yapar.

Çünkü gerçek sınırlama, daha fazla gibi "yok başvurmak için bir üst düzey sınıftan başka bir dosya sürece aynı adı taşıyan dosya yoksa sen de değinen bir sınıf bu, aynı dosya adında aynı şey olarak dosya" biraz zor, insanlar genellikle gitmek ile çok daha kolay (ama daha sıkı) Sözleşmenin sadece koyarak bir üst düzey sınıfta her dosya. Bu ise hiç bir sınıf, ortak olması gerektiği hakkında fikrinizi değiştirirseniz ya da daha iyi.

Bazen gerçekten herkes belirli bir şekilde bir şey yapar neden iyi bir nedeni var.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • Rhapsody

    Rhapsody

    7 ŞUBAT 2008
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007