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.
Bu tekniği düzenli bir ad (
inner
,nested
,anonymous
benzer)var?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
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.
Java sınıf yolu içinde birden fazla ka...
Nasıl İfade içinde birden fazla dosya ...
Bir java dosyasında birden fazla sınıf...
OpenFileDialog içinde birden fazla dos...
Gıt ile değişen birden fazla dosya tek...