5. static インポート
2005.11.29 株式会社四次元データ CTO 畠中晃弘
- 5.1. 文法
- 5.2. enum 定数のインポート
- 5.3. 複数の同名メソッドのインポート
static インポートは、外部クラスの static メンバの参照を簡略化するための機能です。
5.1. 文法
static インポート機能では、外部クラスの static 変数および static メソッドのインポート宣言を行うことが出来ます。static インポートは import static 文で行います。
たとえば、球の体積を求める以下のようなプログラムがあります。
class A { public double volume(double r) { return 0.75 * Math.pow(r, 3) * Math.PI; } .... }
これを static インポート機能を用いることにより、以下のように書き換えることができます。
import static java.lang.Math.pow; import static java.lang.Math.PI; class A { public double volume(double r) { return 0.75 * pow(r, 3) * PI; } .... }
これまでの import 文と同じように、ワイルドカード「*」を利用することもできます。
import static java.lang.Math.*;
5.2. enum 定数のインポート
enum 型の各項目は内部的には static なメンバ変数ですので、public 宣言された enum 型の項目は static インポートすることができます。ただし、通常のインポートと同じく、インポートされる
enum 型は特定のパッケージに属していなければ生けません。無名パッケージに属している
enum 型はインポートすることができません。
package com.techscore; public enum.Color { RED, BLUE, YELLOW, BLACK, WHITE }
この場合、外部からは次のようにインポートすることが出来ます。
import.static com.techscore.Color.*;
public な内部クラスとして定義された enum 型も外部から import することが出来ます。
package com.techscore; public class A { public enum.Color { RED, BLUE, YELLOW, BLACK, WHITE } ... }
この場合、外部からは次のようにインポートすることで、RED や BLUE などをそのまま使用することができます。
import static com.techscore.A.Color.*;
ただし、自クラスの内部クラスのメンバを static インポートすることはできません。上記の例では、クラス A のメソッド内からは Color.RED などとして参照するしかありません(switch 文の case ラベルとして使用する場合は例外です)。