連載
» 2008年01月15日 00時00分 公開

ソースコードで学ぶ SJC-P 5.0 ドリル(2):Java SE 5.0の新機能、staticインポートを習得する (1/2)

本連載は、サン・マイクロシステムズ認定のJava資格Sun Certified Programmer for Java 2 Platform 5.0(SJC-P5.0)に対応しています。最新の出題傾向に基づいて、ソースコードの問題を中心に毎回模擬問題を1問出題します。ソースコードに慣れながら、SJC-P合格を目指して頑張りましょう。

[山本道子,有限会社 Ray]

 連載第2回は、Java SE 5.0で新たに導入された、staticインポートからの出題です。

staticインポートとは

 従来、static変数やstaticメソッドを利用する場合、クラス名を付けてアクセスする必要がありました。ここでは、staticメソッドを持つクラス(ソースコード1-1)を利用しているクラス(ソースコード1-2)の例を見てみましょう。 ※これらのクラスは異なるパッケージに属しています。

package com.it.sjcp; // パッケージ名
public class StaticTest { // クラス名
  public static void method() { // staticメソッド名
    System.out.println("Hello SJCP");
  }
}
ソースコード1-1 staticメソッドを提供しているクラス
import com.it.sjcp.StaticTest;
class Sample {
  public static void main(String[] args) {
    StaticTest.method(); // クラス名.メソッド名
  }
}
ソースコード1-2 従来の方法:staticメソッドを利用しているクラス

 上記のように、従来ではstaticメンバを利用するときには「クラス名.メソッド名」や、「クラス名.変数名」と記述する必要がありました。Java言語で提供されているjava.lang.MathクラスのstaticメンバであるPI定数を利用する場合も、java.langパッケージになるので、import文は不要になるものの、その都度、Math.PIと記述する必要がありました。

 staticインポートとは、static変数やstaticメソッドをクラス名を指定せずに使用する機能です。これにより、使用するたびにクラス名を記述する必要がなくなります。キーワードとしてimport staticを使用し、完全修飾名およびインポートしたいstatic変数やstaticメソッドを指定します。 ※完全修飾名とは、「パッケージ名.クラス名」といった正式なクラス名称のことです。

【構文】

import static パッケージ名.クラス名.static変数名;
import static パッケージ名.クラス名.staticメソッド名;
import static パッケージ名.クラス名.*;

import static com.it.sjcp.StaticTest.method;
class Sample{
  public static void main(String[] args) {
    method(); 
  }
}
ソースコード2 staticインポートを使用した方法 :staticメソッドを利用しているクラス

【構文】 import static パッケージ名 . クラス名 . static メソッド名;

演習問題

 以下の問題を考えてみてください。解答と解説は次のページにあります。

問題

 次のソースコードがあります。

 1.package com.it;
 2.public class Calc {
 3.  public static int sum(int x, int y) {
 4.    return x + y;
 5.  }
 6.}


 また別のファイルとして次のソースコードがあります。

 1.[     (1)     ]
2.class Test {
3. public static void main(String[] args) {
4. System.out.println(sum(10,10));
5. }
6.}


 Testクラスを正しくコンパイル、実行し、実行結果として20を出力するために、空欄(1)に入るソースコードはどれですか? 1つ選択してください。

A.import static com.it.*;
B.static import com.it.*;
C.import static com.it.Calc;
D.static import com.it.Calc;
E.import static com.it.Calc.sum;
F.static import com.it.Calc.sum;

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。