私は両方に答えようとします。間違っている場合は修正してください。
場所: Classname .method() またはリフレクションを 使用して静的メソッドが呼び出されている場合、呼び出し元のメソッドの戻り値の型を変更しても、同じメソッドが引き続き呼び出されます。
したがって、JVMはおそらくjvm.cppのネイティブメソッドの1つでこれをチェックします
methodHandle m (THREAD, init_klass->find_method(vmSymbols::object_initializer_name(),> vmSymbols:: void_method_signature() ));
if (m.is_null()) { ------ THROW_MSG_0 …………..
理由: main から値を返すのは無意味ですが、java はそれに対して何もしませんが、たとえば、main の戻り値の型を int に変更しようとすると、JVM がスローします。
public static int main(String[] args) { return 1;
}java.lang.NoSuchMethodError: スレッド「main」でのメイン例外
そのため、Java は、記述されたすべての Java プログラムで対称性を維持するために、エントリ メソッド main() に同じ署名を使用することを義務付けている可能性があります。