<<前ページ目次次ページ>>

【注意】この章はJava5.0の新機能についての解説です。

〜import static〜
何度も同じことを言わせないで

パソコンの画面に向かっていると、目が疲れ頭も疲れ果て、肩がこったりします。意外と気付かないのが、マウスやキーボード操作による手から腕の疲れです。気をつけましょう。

クラスメソッドやクラス変数は、クラス名を頭に指定するのでしたね。それにしてもこのいくつもの「String」や「Math」をどうにかしたい..そこで登場するのが「import static」です。ただのimportではありません。クラスメソッドやクラス変数をあらかじめフルネームの形で指定しておくと、プログラム中で、頭のクラス名を省略することができるのです。

 ここで使われているクラスメソッドとクラス変数は次の通りです。
     クラスメソッド String.valueOf Math.abs   Math.ceil   Math.sqrt
     クラス変数      Math.PI   Math.E
 これらをすべて、「import static」に指定しておけば、「String」「Math.」の部分が不要になります。


import static java.lang.String.valueOf;
import static java.lang.Math.abs;
import static java.lang.Math.ceil;
import static java.lang.Math.sqrt;
import static java.lang.Math.PI;

import static java.lang.Math.E;


public class Main {

        public static void main(String[] args) {
                boolean b = false;
                int i = 123;
                double d = 0.000000123;
                String s = valueOf(b) + " " + valueOf(i) + " " + valueOf(d);
                System.out.println(s);

                System.out.println(abs(-1.5) + " " + ceil(1.23) + " " + sqrt(2));
                    System.out.println(PI + " " + E);
        }
}



 どうですか、だいぶすっきりしましたね。「String」が三つ、「Math」が五つなくなりました。合計38文字分スリムになり、見た目もすっきり、腱鞘炎も少し遠のきました。ああそのかわり頭に何行も増えたじゃないか..という方は次の方法をどうぞ。

 クラスjava.lang.Mathのクラス変数やクラスメソッドすべてについて、クラス名の指定を省略したい、という場合に、次のように「*」を使います。こうすると、sincosなどについても「Math.」の指定なしでOKです。

import static java.lang.String.*;
import static java.lang.Math.*;


public class Main {

        public static void main(String[] args) {
                boolean b = false;
                int i = 123;
                double d = 0.000000123;
                String s = valueOf(b) + " " + valueOf(i) + " " + valueOf(d);
                System.out.println(s);

                System.out.println(abs(-1.5) + " " + ceil(1.23) + " " + sqrt(2));
                System.out.println(PI + " " + E);
        }
}

 ついでに出力時にお題目のように唱えていた「System.out.println」の意味も考えて見ましょう。実はoutはjava.lang.Systemというクラスの、クラス変数だったのです。だからいつも頭に「System」を乗っけていたのですね。そこでこれを「import static」を使って書き換えると、ちょっと見慣れぬプログラムになりました。最初の6行を「*」を使わずに書いたのは個人的な好みです。

import static java.lang.Math.E;
import static java.lang.Math.PI;
import static java.lang.Math.abs;
import static java.lang.Math.ceil;
import static java.lang.Math.sqrt;
import static java.lang.String.valueOf;

import static java.lang.System.out;

public class Main {
        public static void main(String[] args) {
                boolean b = false;
                int i = 123;
                double d = 0.000000123;
                String s = valueOf(b) + " " + valueOf(i) + " " + valueOf(d);
                out.println(s);

                out.println(abs(-1.5) + " " + ceil(1.23) + " " + sqrt(2));
                out.println(PI + " " + E);
        }
}


 outの型はjava.io.PrintStreamでメソッドprintlnはそのクラスのインスタンスメソッドです。
   import static java.lang.System.out.println;
などという指定はできませんのであしからず。

import」と「import static」を混同しないでください。「import」はクラス名をフルネームで指定しなくてすむようにするため、「import static」は、クラス変数やクラスメソッドを、クラス名をくっつけて指定しなくてすむようにするためのものです。ご注意を。











Copyright (c) 2007 Nagi Imai All Rights Reserved.

 つい子どもに言ってしまうこのセリフ。プログラムに何度も同じ名前が繰り返し繰り返し出てくると、キーインしながら言ってしまいたくなりませんか?前章のこのプログラム、やたら「String」と「Math」が出てきます。どうにかならないかしら?にお答えするのがこの章です。

public class Main {
       
public static void main(String[] args) {

              boolean b = false;
              int i = 123;
              double d = 0.000000123;
              String s = String.valueOf(b) + " " +
                            String.valueOf(i) + " " +
                            String.valueOf(d);
              System.out.println(s);
             
              System.out.println(Math.abs(-1.5) + " " +
                            Math.ceil(1.23) + " " +
                            Math.sqrt(2));      
             
              System.out.println(Math.PI + " " + Math.E); 
       }
}

<<前ページ目次次ページ>>
20.(追加)腱鞘炎にご注意