重複の可能性:
Java のメイン メソッドが静的なのはなぜですか?
JAVA はリフレクションをサポートしていますが、JAVA は main メソッドを static にする必要があります。なぜですか?
リフレクションを使用して、クラスのオブジェクトを作成し、そのクラスのメソッドを呼び出すこともできるため、JAVA ではメイン メソッドを静的にする必要があります。
これについてのコメントをお待ちしております。
重複の可能性:
Java のメイン メソッドが静的なのはなぜですか?
JAVA はリフレクションをサポートしていますが、JAVA は main メソッドを static にする必要があります。なぜですか?
リフレクションを使用して、クラスのオブジェクトを作成し、そのクラスのメソッドを呼び出すこともできるため、JAVA ではメイン メソッドを静的にする必要があります。
これについてのコメントをお待ちしております。
確実に与えられる唯一の答えは、「 JLSがそう言っているから」です。見積もり:
メソッドは、、、および と
main
宣言する必要があります。宣言された型が の配列である仮パラメーター (§8.4.1) を指定する必要があります。public
static
void
String
リフレクションは Java 1.1 以降にのみ導入されたため、最初の Java 1.0 標準はそれらに基づくことができませんでした。彼らはおそらく、ブートストラップのためだけにリフレクションのようなコードを持っていたのでしょう。Java がまだ Oak と呼ばれていた時代に、それがどれほど完全だったかは不明です。
また、これは C++ から継承され、さらに C からも継承される可能性があります。C++ は最初にアプリケーション オブジェクトを構築し、そのvirtual main()
上で を呼び出すこともできますが、これはおそらく複雑すぎるように見えたため、main
C 開発者になじみのあるシンプルな を使用することを選択しました。
プログラムを実行すると、ランタイム環境はシグネチャを持つメソッドを探すためpublic static void main (String[] args)
です。リフレクションがサポートされている場合でも、ランタイムはクラスのmain
メソッドを最初に呼び出す必要があります。
public static void main(String []args)
1.のすべてのキーワードの説明public
:メソッド を定義するの一部ではないためである
必要があります。そのため、 2. :を呼び出すオブジェクトを構築する予定はありません。そしてメインはに依存していません。
3. :に有用な情報を返すつもりはありません。プログラムの実行は から始まり、通常の終了がある場合は.In の最後のステートメントで終了します。
4. :
メソッドの重要性を示すために使用される固有名詞です。
5. : main に渡される引数は 1 つ以上の単語です。public
JVM
class
main
private
static
JVM
main
class
void
main
JVM
main()
main
main
Array of Strings
int
、float
、char
、またはString
。上記はすべて として表すことができますStrings
。
それが役に立てば幸い
Public : JVM が main メソッドにアクセスできるようにするには、それを public にする必要があります。
Static : main メソッドをホストするクラスのインスタンス化基準を予測することは非常に複雑であるか、おそらく不可能であるため、静的であることが義務付けられており、クラスからオブジェクトを作成する必要なく JVM が呼び出すことができます。
結局のところ、言語を定義する際には明確な契約が必要であり、そのような義務付けられた制約がなければ、JVM 設計者にとって厄介なことになる可能性があります。