Previous | Next | Trail Map | Writing Java Programs | プログラム属性の設定


コマンドライン引数

Java アプリケーションはコマンドラインから多くの引数を受け取ることができる。 コマンドライン引数により、ユーザはアプリケーションの操作に影響を与えることができる。 例えば、プログラムに冗長モードを指定することができることもあるだろう。すなわち、アプリケーションがコマンドライン引数 -verboseで、多くのトレース情報を表示するよう否定することができる。

アプリケーションを起動する時、ユーザはアプリケーション名の後にコマンドライン引数を入力する。 例えば、あるファイル内の行を分類するSortという Java アプリケーションを持っていたと仮定する。そして、分類したいデータは ListOfFriends ファイルがあるとする。 DOS を使用していたら、次のように Sort アプリケーションを起動することだろう。

 C:¥> java Sort ListOfFriends

Java 言語では、アプリケーションを起動する時に、実行時システムはアプリケーションの main メソッドにコマンドライン引数を Storing の配列として渡す。 配列での各 String にはコマンドライン引数の1つが含まれる。 前の例では、Sort アプリケーションに渡すコマンドライン引数は、ひとつの文字列 "ListOfFriends" を含む配列である。

コマンドライン引数のエコー

次の単純なアプリケーションでは、コマンドライン引数を一行に一つずつ表示する。

class Echo {
    public static void main (String args[]) {
        for (int i = 0; i < args.length; i++)
            System.out.println(args[i]);
    }
}

これを試みる: 次の DOS の例で示されるコマンドラインで Echo アプリケーションを起動しなさい。

C:¥> java Echo Drink Hot Java
Drink
Hot
Java

アプリケーションが各行上に各単語 − Drink Hot Java − を表示することに注意する。 これは空白文字がコマンドライン引数を分離するためである。

規約

Java アプリケーションでコマンドライン引数を理解したり処理したりするときに、守るべきいくつかの規約がある。

コマンドライン引数の解析

ほとんどのプログラムでは、ユーザがアプリケーションの実行に影響を与えることのできるコマンドライン引数を理解する。 例えば、ディレクトリの内容 をプリントする UNIX コマンド− ls ユーティリティプログラム − は、プリントするファイル属性やファイルが表示される順序を決定する引数を理解する。 一般にユーザは、アプリケーションにコマンドライン引数を要求することにより任意の順序でコマンドライン引数を指定することができる。


C 言語と C++ プログラマへの注釈:  Java アプリケーションに渡されるコマンドライン引数は、Cあるいは C++ プログラムに渡されるコマンド引数とは数や型が異なる。

パラメータの数

C 言語と C++ でプログラムを起動する時、システムは2つのパラメータを渡す。
argc − コマンドライン上の引数の数
argv − 引数を含む文字列の配列へのポインタ

Java アプリケーションを起動する時、システムはパラメータを1つ渡すだけである。

args − 引数を含む Strings の配列(配列へのポインタではなく、単なる配列)

配列の length() メソッドで、コマンドライン引数の数を知ることができる。

最初のコマンドライン引数

C 言語と C++ では、システムは、起動に使用した名前を含めて引数としてプログラムにすべてのコマンドラインを渡す。 例えば、もし次のようなCプログラムを起動した場合、

diff file1 file2 

このとき argv パラメータの最初の引数は diff である。

Java では、main メソッドが定義されるのはクラス名なので、常にアプリケーション名はわかっている。 このため、 Java 実行時システムは、起動するクラス名を main メソッドに渡さない。 システムはクラス名の後に現われるコマンドラインの項目だけを渡す。 例えば、次のような Java アプリケーションを起動した場合、

Java diff file1 file2 

最初のコマンドライン引数は file1 である。



Previous | Next | Trail Map | Writing Java Programs | プログラム属性の設定