静的インポート宣言

パッケージ - rderaログ
型インポート宣言 - rderaログ
パッケージの自動インポート - rderaログ
今までは、パッケージに所属するクラスをインポートすることを学んできた。
でも、クラスの中の以下の2つもインポートできるみたいです。

・クラス変数
・クラスメソッド

これらをインポートすることを静的インポートと呼ぶみたいです。
クラス変数、クラスメソッドに関しては以前、学んだので以下を参照。
クラス変数 - rderaログ
クラスメソッド - rderaログ
注意しなければならないのはインスタンス変数とインスタンスメソッドはインポートできないということ。


型インポート宣言と同様に、この静的インポート宣言にも2つの方法があります。
まぁ、違うのはstaticを付けること位ですか。

import static 型名.識別子名; //単一静的インポート宣言
import static 型名.*;        //オンデマンド型静的インポート宣言


具体例として、パッケージjava.langに属するクラスMathのクラス変数PIを静的インポートして、単純名で呼ぶことを考えます。
以下のように実現できます。

import static java.lang.Math.PI; //単一静的インポート宣言
.....
System.out.println("円周率は"+PI);

ちなみにこの静的インポート文がないときのクラス変数PIの呼び出しは

System.out.println("円周率は"+Math.PI);

になります。クラスMathが属するパッケージjava.langは自動インポートされています。

注意事項

繰り返しになるが、静的インポートできるのは"クラス変数"と"クラスメソッド"の2つである。
インスタンスメソッドを静的インポートすることはできない。
だから、インスタンスメソッドであるprintlnを以下のように呼ぶことはできない。

import static java.lang.System.out.println; //エラー
......
println("Hello World");