public static void
署名の...部分を変更したくありませんがString[] args
、この関数の「名前を変更」することは可能ですか(たとえば、楽しみのために)?
したがって、実行のエントリポイントは、別の名前の関数になります。
名前を次のように変更しboot
ます(歴史的でない場合は、私の特定のケースでの実際の使用をより適切に反映します)。
関連している
私は何か違うことをすることに興味がありますが、これらの質問はまだ興味深いものです。
public static void
署名の...部分を変更したくありませんがString[] args
、この関数の「名前を変更」することは可能ですか(たとえば、楽しみのために)?
したがって、実行のエントリポイントは、別の名前の関数になります。
名前を次のように変更しboot
ます(歴史的でない場合は、私の特定のケースでの実際の使用をより適切に反映します)。
関連している
私は何か違うことをすることに興味がありますが、これらの質問はまだ興味深いものです。
いいえ。Java言語仕様には次のように書かれています。
Java仮想マシンは、指定されたクラスのメソッドを呼び出し、
main
文字列の配列である単一の引数を渡すことによって実行を開始します。
JVM仕様は同じことを言っています:
次に、Java仮想マシンは初期クラスをリンクして初期化し、パブリッククラスメソッドを呼び出します
void main(String[])
。
簡単な答えいいえ、理由、仕様はそのようなものであり、開始点としてカスタム名をJVM
検索するだけで、カスタム名は検索しません。main
正確な署名でメインと呼ばれる必要がありますpublic static void main(String[] args)
論理的には、コマンドにstartメソッドを渡すオプションがない限り、メソッドJVM
の代わりに何かmain
を探す必要があることをどのように知るかは理にかなっています。boot
java
しかし、それは正当な理由もなくあまりにも多くを求めています。
第二に、標準化されているため、開発者コミュニティにも役立ちます。コードを見る人は誰でも、特定のJava
スタンドアロンプログラムの実行方法を知っているか、プロジェクトがあるかどうかを言うと、最初のポイントは常にメインメソッドを探すことです。進め。
いいえ。Java言語仕様に従ってそれを行うことはできません。ただし、必要に応じて、Javaはオープンソースプロジェクトであるため、Java言語の完全なソースコードをダウンロードし、それに応じて変更します(つまり、JVM自体のソースコードを変更します)。これがあなたがそれをすることができる唯一の方法です。
だから今あなたは理解することができます、なぜ私がそれが不可能だと言ったのか。
開始時に、JVMはpublic static void main
引数として文字列の配列を持つメソッドから検索しています。したがって、できることは引数の名前を変更することだけですargs
。ブートのような方法が必要な場合、誰もあなたがこのようなことをするのを止めません(個人的にはその「パターン」はお勧めしません)
static void boot(String[] arguments){
//your logic
}
public static void main(String[] args) {
boot(args);
}
アプリケーションはから実行を開始しpublic static void main(String[] args)
ます。これは、JVMが手続きを開始するために見るポイントのようなものです。これを変更した場合、JVMは自由にアプリケーションを起動しないようになります。
boot()
アプリケーションの開始点として使用したい場合は、で呼び出しますmain()
。
簡単な答えはNO
です。プログラムの実行を開始すると、 public static void main(String[] args)
String配列引数をとるプログラムが検索されます。このエントリポイントからメインスレッドが開始されます。
はい、JVMの構成を変更して、mainメソッドの代わりに別の名前のメソッドを検索させることができれば、mainメソッドの名前を変更できます。