Java メイン メソッド: 静的宣言を使用する理由
Java メイン メソッドには特定のシグネチャがあります:
public static void main(String[] args) { ... }
ここで疑問が生じます:静的修飾子はメインに必須ですか? method?
要件ではなく規約
最初の印象に反して、main メソッドの静的宣言は言語上の必然性ではなく、規約です。驚かれるかもしれませんが、メソッド名 "main()" と String[] パラメータさえも単なる規則に過ぎません。
代替規則
Java 21 では代替規則が導入されました。これにより、String[] パラメータ、public 修飾子、さらには static 修飾子の省略が可能になります。 static 修飾子が存在しない場合、クラスのインスタンスは main() 呼び出しの前に作成され、クラスには非プライベートのゼロパラメーター コンストラクターが必要になります。
Java Native Interface (JNI) と java.exe
java.exe (または Windows では javaw.exe) を介した Java プログラムの実行には、JNI が関係します。 JVM を DLL としてロードする呼び出し。 JNI は、JVM 環境と C/C 環境の間のブリッジとして機能します。
java.exe: 単純な C アプリケーション
java.exe は本質的に、次のような単純化された C アプリケーションです。コマンドライン引数を解析し、JVM 内に String 配列を作成し、JNI を使用して指定されたクラスで main() メソッドを見つけ、引数の配列を使用してそれを呼び出します。このプロセスは Java リフレクションに似ており、代わりにネイティブ関数呼び出しを使用します。
java.exe のカスタマイズ
java.exe ( JDK) を使用してその機能を変更します。これは、ランチャーのカスタマイズ、固有のアイコンの提供、特定のシナリオの処理 (例: main() への COM ハンドルの受け渡し) を行うために Java ベースのアプリケーションで使用されます。
利便性と歴史的影響
main メソッドの静的な性質は利便性をもたらし、C から採用された命名規則と一致します。これにより、IDE は次のことを行うことができます。プロジェクト内の起動可能なクラスを自動検出します。代替手段は存在しますが、「静的」メイン メソッドは Java プログラミングの普遍的な慣例として存続します。
以上がJava の「main」メソッドが「static」として宣言されているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。