1. ホーム
  2. java

[解決済み] なぜJavaのmainメソッドは静的なのですか?

2022-03-19 08:59:41

質問

のメソッドシグネチャは、Javaの main というメソッドがあります。

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

このメソッドが静的でなければならない理由はありますか?

どのように解決するのですか?

そうしないと、どのコンストラクタを呼び出すべきかという曖昧さが生じるため、このメソッドは静的です。 特に、以下のようなクラスであればなおさらです。

public class JavaClass{
  protected JavaClass(int x){}
  public void main(String[] args){
  }
}

JVMは new JavaClass(int) ? には何を渡すべきでしょうか? x ?

そうでない場合、JVMはインスタンス化する必要があります JavaClass コンストラクタのメソッドを実行せずに? 初期化されていないインスタンスがある場合、呼び出される可能性のあるすべてのメソッドでそれをチェックしなければならないからです。

エッジケースやあいまいな点が多すぎて、エントリポイントが呼ばれる前にJVMがクラスをインスタンス化しなければならないのは理に適っていないのです。 そのため main は静的です。

なぜ main が常にマークされています。 public とはいえ