参照は次を使用して作成できます
Class_Name Var_Name;
Class_Name Var_Name=null;
どちらの場合も Var_Name に null 値が割り当てられていることを知っています。参照にnullを割り当てる(参照を無効にする)のは良いコーディング標準ですか、それともnullを割り当てるロジックや利点はありますか?
クラス フィールドの場合、まったく違いはありません。明示的に初期化されていないフィールドは、クラスのインスタンスが作成されるときに、その型の既定値で初期化されます。オブジェクトの場合、デフォルトは です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, ...);