AxiZ沖縄ブログ

エンジニア育成学校【AxiZ沖縄】のブログです。

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の生成」ボタンを押します。
そこで、フィールドの一覧が表示されるので
アクセッサメソッドを作成したいフィールドにチェックを入れて、
生成ボタンを押すと、アクセッサメソッドが自動的に作成されます。
便利な機能なのでどんどん活用していきましょう。