web-dev-qa-db-ja.com

Javaのデフォルトパッケージの使用は悪い習慣ですか?

Javaのデフォルトパッケージの使用は悪い習慣ですか?

49
H2ONaCl

はい、そうです。理想的には、名前の衝突を避けるために、パッケージ名はグローバルに一意である必要があります。デフォルトのパッケージを使用すると、この規則が破られます。また、デフォルトパッケージからクラスをインポートすることもできません。

名前のないパッケージが存在するのはなぜですか? JLS§7.4.2 から:

名前のないパッケージは、Javaプラットフォームによって提供されます。主に、小規模または一時的なアプリケーションを開発するとき、または開発を開始するときに便利です。

56
Matt Ball

多くの異なるレベルで問題があります:

  • そうでないクラスからデフォルトパッケージのクラスをインポートすることはできません
  • 複数のアーティファクトのデフォルトパッケージを解決しようとすると、クラスローディングの問題が発生します。
  • 通常のようにデフォルトの保護されたスコープを使用できなくなりました
  • コードと他のコードとの間に明確な区別はありません
20

はい、そうです。他の回答が述べているように、デフォルトパッケージからクラスをロードすることはできません。

SO回答:

デフォルトパッケージからクラスをインポートする方法
default-packageのJavaクラスにアクセスする方法

ただし、log4jでは、構成がデフォルトパッケージにある必要があります。これはそこに保持するのが妥当な唯一のものです。

編集:ショーン・パトリック・フロイドとマイケルがコメントで指摘したように、デフォルトのパッケージに設定ファイルを置くことができます。これを私に指摘してくれた二人に感謝します。

3

はい、そうです。問題は、デフォルトパッケージからクラスをインポートできないことです。

1
Mathias Schwarz