Java応用の補足【パッケージとアクセス修飾子】
ワイルドカードインポート
パッケージをimportする方法についての補足です。
importする際に、アスタリスク(*)を使用することができます。
アスタリスクのことをワイルドカードと呼ぶこともあります。
具体的な書き方としては、
import a.*;
という風に書きます。
こう書くと、「a」というパッケージに含まれるすべてのクラスを一括でインポートすることができます。
注意点としては、仮に
「a.b」というパッケージがあったとすると、
そのパッケージに含まれるクラスはインポートされません。
「a.b」というパッケージに含まれるクラスも全てインポートしたければ、
import a.*; import a.b.*;
という風に書く必要があります。
OS上で見ると、パッケージはフォルダの扱いになっているので、
階層構造になっているように見えますが、
Javaのパッケージに階層構造という概念はないという点に注意してください。
同一パッケージから複数のクラスを利用する場合、
ワイルドカードインポートを使うとimportの行数が減るのでソースはすっきりしそうですが、
実際には使わないほうがいいです。
理由は、実際に使っているクラスがどのクラスか分からなくなるから。
eclipseを使って開発をしていれば、
ソースの中でクラス名を書けば自動でimportはほとんど補ってくれるので、
importを書くのが面倒、という場面はほとんどないです。
ワイルドカードインポート、というインポートの仕方がある、
という事は知識として知っておいて、
実際には一つ一つのクラスを指定してインポートするようにしましょう。
static import
インポートの方法には、static import という方法もあります。
これは、クラスフィールドやクラスメソッドを簡略化して書くための方法です。
例えば、Javaで標準出力をするための処理として
System.out.println(1);
という処理をよく使用しますね。
この中の、outというフィールドは、
Systemクラスが持つstaticフィールドです。
static importを使用すると、
このSystemの記述を省略することができます。
import static java.lang.System.out; public class Test { public static void main(String[] args) { out.println(1); } }
こんな感じです。
使いこなせれば便利ではありますが、
実際使われる場面はそう多くはないでしょう。
知識として知っておく程度でもいいでしょう。
アクセッサメソッドの自動生成
クラスをカプセル化するためには、
フィールドのアクセス修飾子をprivateにして、
アクセッサメソッド(ゲッターとセッター)を作成します。
フィールドが多いと、
アクセッサメソッドを手動で作成するのは結構面倒ですが、
実はeclipseの機能で自動的に作成することが可能です。
eclipse上の「ソース」メニューを開き、
「getter及びsetterの生成」ボタンを押します。
そこで、フィールドの一覧が表示されるので
アクセッサメソッドを作成したいフィールドにチェックを入れて、
生成ボタンを押すと、アクセッサメソッドが自動的に作成されます。
便利な機能なのでどんどん活用していきましょう。