2

Java のプログラムへのエントリ ポイントは通常、次のようなものです。


    // MyMain.java
    public class MyMain{  
      //whatever 
        public static void main(String args[]){ 
        System.out.println("balderdash");
        }
    }

ただ、mainにSOPが一つしかないので、上記のクラスは代わりにこうなるかもしれません


    // MyMain.java
    public class MyMain{
        //whatever
        static {    
        System.out.println("balderdash");
        }
    }

main(...) を使用する明らかな利点の 1 つは、引数をプログラムに渡すことができることです。もう1つ(ここでは推測しています)は、静的ブロック内で作成されたオブジェクトを別の方法で処理するガベージコレクターに関係している可能性があります。

静的初期化子を使用する代わりに、言語定義のエントリ ポイント public static void main( String args[] ) を使用すると、他にどのような利点がありますか。

ps 上記のスニペットは説明のみを目的としており、コンパイルできない場合があります

4

6 に答える 6

5

main()コード内の他の場所から何度でも他のオブジェクトを呼び出すことができます。静的初期化子は一度だけ実行されます。また、コマンド ラインから にパラメータを渡すこともできますmain()

main()私の本には2つの大きなプラスがあります。

于 2009-08-19T07:45:35.383 に答える
2

OK、静的に初期化されたクラスで試したことはありませんが、入力しないことは認めます

java StaticInitializedClass

コマンドラインで印刷

Exception in thread "main" java.lang.NoSuchMethodError: main

メソッドがないからmain(String[])

于 2009-08-19T14:09:39.937 に答える
1

メンテナンス性も忘れてはなりません。他の誰かがあなたのコードを変更しようとするとき、彼らは常に main() メソッドを探してプログラムを開始します。あなたが回避できない何らかの理由がない限り(そして私はそうではないと推測しています)、私はメインメソッドを使用します。

于 2009-08-19T13:59:03.213 に答える
0

エントリ ポイントがなければ、何も実行できません。多くのエントリ ポイント (多くの主要なメソッド) がある場合、アプリケーションを起動するユーザーは、コマンド ラインで実行されるコントロールを制御します。
一方、クラスがロードされると、静的初期化ブロックが実行されます。ロードされるクラスとクラスのロード (および静的初期化ブロックの実行) の順序を制御することは、制御がはるかに困難です。これは、静的初期化ブロックに多くのロジックを配置しない十分な理由です。何かを読みにくく、理解しにくくし、見返りに使いにくいものを受け取ります。

于 2009-08-19T14:22:18.067 に答える