本連載は、サン・マイクロシステムズ認定のJava資格Sun Certified Programmer for Java 2 Platform 5.0(SJC-P5.0)に対応しています。最新の出題傾向に基づいて、ソースコードの問題を中心に毎回模擬問題を1問出題します。ソースコードに慣れながら、SJC-P合格を目指して頑張りましょう。
連載第2回は、Java SE 5.0で新たに導入された、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) ] |
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;
Copyright © ITmedia, Inc. All Rights Reserved.