2016-10-15 7 views
1

このように、パラメータとして、main関数内で直接コマンドラインプログラムのパラメータを定義することが可能である場合、私は疑問に思って:それが可能だうんJavaでパラメータとして単一の引数を定義することはできますか?

public class HelloWorld { 
    public static void main(String[] args) { 
     //do something with args[0], args[1] 
    } 
} 
+0

いいえ、 'main'は定義済みのエントリポイントです。あなたはそれの署名を変更することはできません – UnholySheep

+0

あなたは文字列の配列のみことができます... –

答えて

2

いいえ、これは、Java言語仕様で許可されていません。

それを引用すると:

方法のメインは、公共の静的な、ボイド宣言されなければなりません。 は、宣言された型が 文字列の配列である仮パラメータ(§8.4.1)を指定する必要があります。したがって、次の宣言のいずれかが許容可能である:

公共の静的な無効メイン(文字列[]引数)

公共の静的な無効メイン(文字列...引数)

リンク:http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.1

+0

クイックアンサーに感謝します! – binaryBigInt

2

public class HelloWorld { 
    public static void main(double a1, double a2) { 
     //do something with a1, a2... 
    } 
} 

の代わりに。 独自のパラメータを作成することはできません。 args []変数はすでに渡された値を処理できます。 args [0] ... args [n]を呼び出すだけで、すべてのコマンドライン引数の値にアクセスする必要があります。

例: 文字列オプション= args [0]; System.out.println(オプション);

テスト: javaのmyProgram.java -sampleArgument

結果: -sampleArgument

1

私はあなたのために新しいものを得ました...それは直接できません。 JVMは、常にあなたのプログラムのエントリポイントとして、以下のシグネチャを持つメソッドを検索します(スタンダールI'ts、それはproblably変更することはありません):

public static void main(String ... args) 

私が知っている「文字列...引数こと"奇妙に思えるかもしれませんが、" String [] args "の単なる表記です。 しかし、あなたはまだそれを行うことで、次々とそれらを呼び出すことができます。

public static void main(String ... args){ 
    System.out.println(args[0]);//if there is one argument 
} 
0

はもちろん、あなたがパラメータのいずれかの種類を取るメインメソッドを定義することができます。

メインメソッドを "エントリーポイント"(JVMに対応するクラスを呼び出すように指示する)として使用する場合は、ごめんなさい、それはうまくいきません。

JVMでは、public static voidと定義されたmainを実行し、Stringの配列を取ることしかできません。

もちろん、期待されるコマンドライン引数とそのタイプを "定義"できるようにするなど、多くのライブラリがあります。意味:コマンドラインの引数を必要なものに変えるために、ホイールを常に作り直す必要はありません。あなたは "私がこれを望んでいる"と指定し、そこから行くことができます。このトピックの周辺のライブラリについては、hereを参照してください。

関連する問題