目次へ

5. static インポート

2005.11.29 株式会社四次元データ CTO 畠中晃弘

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 ラベルとして使用する場合は例外です)。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp