構文に関する質問があります。
クラスのオブジェクトは次のように作成できることを知っています:
MyClass classname = new MyClass();
しかし、次のことをすれば大丈夫ですか:
MyClass classname;
//.....some lines of code
classname = new MyClass();
はい、型宣言とは別の行でオブジェクトをインスタンス化できますが、別のスコープでオブジェクトをインスタンス化する場合にのみ役立ちます。
Object o;
try {
o = new Thing();
} catch(Exception e) {
}
o.toString();
はい、できます。
後:
myclass classname;
Pshemoがコメントで述べたように、割り当ての前に使用するとclassname
、参照null
またはコードはコンパイルされません。
他の時間/操作の後にこの参照を他のオブジェクトに何度も割り当てることができ、null に戻すこともできます。
classname = new myclass();
classname = new myclass();
classname = new child_of_myclass();
classname = other_object_of_classname;
classname = null;