2011-10-21 15 views
48

Java'nın varsayılan paketinin kullanımı kötü bir uygulamadır mı?Java'nın varsayılan paketinin kullanımı kötü bir uygulamadır mı?

+0

Bu paketteki sınıflara başka, 'gerçek' paketlerden başvurmaya çalışırken varsayılan paketi kullanmada ortaya çıkan sorunların belirsiz anılarına sahibim. – Oliver

+4

Evet, atma kodu yazmıyorsanız. – aroth

+5

Yaptığınız şeye bağlı. Bir sınıf Java ödevi için iyi. Başka bir şey - sadece adlandırılmış bir pakete koyun ve güvende olursun. –

cevap

54

Evet, öyle. İdeal olarak, paket isimlerinin çarpışmaları önlemek için paket isimleri global olarak benzersiz olmalıdır. Varsayılan paketi kullanmak bu sözleşmeyi bozar. Bir sınıfı varsayılan paketten almak da imkansızdır.

Adsız paketler neden bu kadar kötü bir fikirse, neden var? the JLS §7.4.2 Gönderen:

Unnamed packages are provided by the Java platform principally for convenience when developing small or temporary applications or when just beginning development.

+1

) ... Bir başkasının seninle aynı düşünce çizgisine sahip olmasına gerek yok. Sadece adlandırılmış bir paket kullanmakla ilgili sorun nedir? –

+0

@irreputable Mantığınızı beğeniyorum. – Michael

+3

... evet, ama sonra benim gibi insanlar için endişeleniyorlar, böylece hepsi kullanmamaya karar verdiler. – irreputable

1

Evet, öyle. Sorun, sınıfları varsayılan paketten almak mümkün olmamasıdır.

20

birçok farklı düzeylerde sorunlar vardır:

  • Eğer sınıf yükleme sorunlarını eğer alacak
  • olmayan sınıflardan varsayılan paketindeki sınıfları alamıyor Birden çok eserler
  • içinde varsayılan paketi çözümlemeye çalışın, normalde
  • gibi varsayılan ve korumalı kapsamı kullanamazsınız. kodunuz ile diğer kodunuz arasındaki ayrım
3

Evet öyle. Diğer cevaplar belirttiği gibi, sınıfları varsayılan paketten yükleyemezsiniz.

SO cevapları bakınız:

How to import a class from default package
How to access java-classes in the default-package?

Ancak log4j yapılandırma varsayılan paketinde yer olmasını gerektirir. Orada tutulması makul olan tek şey bu.

Düzeltme: Açıklama Sean Patrick Floyd ve Michael'ın yorumlarda belirttiği gibi, herhangi bir yapılandırma dosyasını varsayılan pakete koyabilirsiniz. Her ikinize de bunu bana gösterdiğin için teşekkürler.

+3

Sadece log4j config değil, birçok yapılandırma verisi türü. Ancak, Java sınıfları –

+0

Spring konfigürasyon dosyaları (applicationContext.xml) genellikle buraya da gider. – Michael

+1

@SeanPatrickFloyd bu benim becerilerimi geliştirmeme yardımcı olan yorumlar! Teşekkür ederim. –

İlgili konular