0

参照は次を使用して作成できます

Class_Name Var_Name;
Class_Name Var_Name=null;

どちらの場合も Var_Name に null 値が割り当てられていることを知っています。参照にnullを割り当てる(参照を無効にする)のは良いコーディング標準ですか、それともnullを割り当てるロジックや利点はありますか?

4

5 に答える 5

1

クラス フィールドの場合、まったく違いはありません。明示的に初期化されていないフィールドは、クラスのインスタンスが作成されるときに、その型の既定値で初期化されます。オブジェクトの場合、デフォルトは ですnull。そう:

private MyClass myClass1;

と同等です

private MyClass myClass1 = null;

どちらも になるためmyClass1ですnull

メソッド変数の場合、かなり大きな違いがあります。変数は、たとえそれが であっても、値を宣言する必要がありnullます。そうしないと、後で使用しようとしたときに (潜在的な) コンパイラ エラーが発生します。このようなことをする:

public void myMethod() {
    MyClass myClass1;

    if(someCondition)
        myClass1 = new MyClass();

    myClass1.doSomething();
}

myClass1コンパイラは値を持つことを保証できないため、無効になります。その行を に変更するMyClass myClass1 = null;ことは有効ですが、実際には実行時エラー (a NullPointerException)が発生する可能性がsomeConditionあります。

次のようなことができます。

MyClass myClass1;

// calculate some values

myClass1 = new MyClass(arg1, arg2, ...);

しかし、それは私には無意味に思えます。myClass1インスタンス化するまで言及する必要はありません。代わりに次のようにします。

// calculate some values

MyClass myClass1 = new MyClass(arg1, arg2, ...);
于 2013-07-01T10:57:54.733 に答える