本連載は、サン・マイクロシステムズ認定の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.