1概要

すべてのプログラムはその実行を開始する場所を必要とします。 Javaプログラムについて話すと、それが

main

メソッドです。

私たちはコードセッション中に

main

メソッドを書くことに慣れているので、その詳細には注意を払いません。この簡単な記事では、この方法を分析し、それを書くための他の方法をいくつか示します。


2共通の署名

最も一般的なメインメソッドテンプレートは次のとおりです。

public static void main(String[]args) { }

これが私たちが学んだ方法、つまりIDEがコードを自動補完する方法です。しかし、それがこのメソッドが想定できる唯一の形式ではありません。

使用できる有効なバリエーションがいくつかあります

すべての開発者がこの事実に注意を払っているわけではありません。

これらのメソッドシグネチャについて説明する前に、共通シグネチャの各キーワードの意味を確認しましょう。


  • public

    – グローバルな可視性を意味するアクセス修飾子


  • static

    – メソッドはクラスから直接アクセスできます。

参照を取得して使用するためにオブジェクトをインスタンス化する必要はありません
**

void

– このメソッドは値を返さないことを意味します


  • main

    – メソッドの名前。JVMが探す識別子です。

Javaプログラムを実行するとき


args

パラメーターに関しては、それはメソッドによって受け取られた値を表します。これが最初の起動時にプログラムに引数を渡す方法です。

パラメータ

args



__String

__の配列です。次の例では

java CommonMainMethodSignature foo bar


CommonMainMethodSignature

というJavaプログラムを実行し、

foo



bar

という2つの引数を渡します。これらの値は、

mgsメソッドの中で

args

(値として

foo

を持つ)および

args

(値として

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()

メソッドを持つ

アプリケーション内で複数の

main

メソッドを定義することもできます。

実際、個々のクラスを検証するための基本的なテスト手法としてこれを使用している人もいます(ただし、このアクティビティには

JUnit

のようなテストフレームワークの方が適しています)。

JVMがアプリケーションのエントリポイントとして実行する

main

メソッドを指定するには、

MANIFEST.MF

ファイルを使用します。マニフェストの中に、メインクラスを示すことができます。

Main-Class: mypackage.ClassWithMainMethod

これは主に実行可能ファイル

.jar

を作成するときに使われます。

META-INF/MANIFEST.MF

(UTF-8でエンコードされている)にあるマニフェストファイルを通して、どのクラスが実行を開始する

main

メソッドを持っているかを示します。


5結論

このチュートリアルでは、

main

メソッドの詳細と、それが想定できる他の形式について説明しました。ほとんどの開発者にはあまり一般的ではありません。

  • ここに示した例はすべて構文の点では有効ですが、これらは教育目的にのみ役立ちます。** ほとんどの場合、私たちは仕事をするために共通の署名を使用します。