Java main()メソッドの説明
1. 概要
すべてのプログラムには、実行を開始する場所が必要です。 Javaプログラムについて言えば、それはmainメソッドです。
コードセッション中にmainメソッドを作成することに慣れているため、その詳細にも注意を払っていません。 この簡単な記事では、この方法を分析し、他のいくつかの書き方を示します。
2. 共通の署名
最も一般的なメインメソッドテンプレートは次のとおりです。
public static void main(String[] args) { }
それが私たちが学んだ方法であり、IDEがコードをオートコンプリートする方法です。 ただし、このメソッドが想定できる形式はこれだけではありません。there are some valid variants we can useであり、すべての開発者がこの事実に注意を払っているわけではありません。
これらのメソッドシグネチャに飛び込む前に、共通シグネチャの各キーワードの意味を確認しましょう。
-
public –アクセス修飾子。グローバルな可視性を意味します
-
static –メソッドはクラスから直接アクセスできます。参照を持つためにオブジェクトをインスタンス化して使用する必要はありません。
-
void –このメソッドが値を返さないことを意味します
-
main –メソッドの名前。これは、Javaプログラムの実行時にJVMが検索する識別子です。
argsパラメータは、メソッドが受け取った値を表します。 これは、最初にプログラムを起動するときに引数を渡す方法です。
パラメータargsは、Stringsの配列です。 次の例では
java CommonMainMethodSignature foo bar
CommonMainMethodSignatureというJavaプログラムを実行し、fooとbarの2つの引数を渡します。 これらの値は、mainメソッド内でargs[0](値としてfooを持つ)およびargs[1](値としてbarを持つ)としてアクセスできます。
次の例では、引数をチェックして、テストパラメータと本番パラメータのどちらをロードするかを決定しています。
public static void main(String[] args) {
if (args.length > 0) {
if (args[0].equals("test")) {
// load test parameters
} else if (args[0].equals("production")) {
// load production parameters
}
}
}
IDEはプログラムに引数を渡すこともできることを覚えておくのは常に良いことです。
3. main()メソッドを作成するさまざまな方法
mainメソッドを作成するいくつかの異なる方法を確認しましょう。 それらはあまり一般的ではありませんが、有効な署名です。
これらはいずれもmainメソッドに固有のものではなく、任意のJavaメソッドで使用できますが、mainメソッドの有効な部分でもあることに注意してください。
角かっこは、一般的なテンプレートのようにStringの近く、またはいずれかの側のargsの近くに配置できます。
public static void main(String []args) { }
public static void main(String args[]) { }
引数は可変引数として表すことができます:
public static void main(String...args) { }
main()メソッドにstrictfpを追加することもできます。これは、浮動小数点値を操作するときにプロセッサ間の互換性のために使用されます。
public strictfp static void main(String[] args) { }
synchronizedとfinalもmainメソッドの有効なキーワードですが、ここでは効果がありません。
一方、finalをargsに適用して、配列が変更されないようにすることができます。
public static void main(final String[] args) { }
これらの例を終了するために、上記のすべてのキーワードを使用してmainメソッドを作成することもできます(もちろん、実際のアプリケーションでは使用しない可能性があります)。
final static synchronized strictfp void main(final String[] args) { }
4. 複数のmain()メソッドがある
more than one main method inside our application.を定義することもできます
実際、一部の人々は、個々のクラスを検証するための基本的なテスト手法としてそれを使用しています(ただし、JUnitのようなテストフレームワークは、このアクティビティに対してはるかに多く示されています)。
JVMがアプリケーションのエントリポイントとして実行するmainメソッドを指定するには、MANIFEST.MFファイルを使用します。 マニフェスト内で、メインクラスを指定できます。
Main-Class: mypackage.ClassWithMainMethod
これは主に、実行可能な.jarファイルを作成するときに使用されます。 META-INF/MANIFEST.MFにあるマニフェストファイル(UTF-8でエンコード)を使用して、実行を開始するためのmainメソッドを持つクラスを示します。
5. 結論
このチュートリアルでは、mainメソッドの詳細と、ほとんどの開発者にあまり一般的ではないものも含めて、想定できるその他の形式について説明しました。
although all the examples that we’ve shown are valid in terms of syntax, they just serve the educational purposeとほとんどの場合、作業を行うために共通の署名を使用することに注意してください。