これをどのように行うのですか?次のように簡単ですか:
Name myName = new Name();
私は少し混乱しています。インスタンス変数のないクラスである必要があります。「空のオブジェクトを作成する」だけです。もちろん、コンストラクターも空になります。
「空のオブジェクト」は、Java 用語ではかなりあいまいです。私はそれを次のように解釈できます:
Object empty = new Object();
これは、作成できる最も空のオブジェクトに関するものです。
ただし、あなたの例では、
Name myName = new Name();
これにより、デフォルトのコンストラクターに配置したコードに基づいてオブジェクトが作成されます。(すべてをデフォルト値に設定している場合、かなり空だと思います)
パラメーターなしのコンストラクターがある場合Name
は、確かに。「空」であるかどうかは、そのコンストラクターが何をするか、またはそれが持つ可能性のあるデフォルトに依存します。
とにかく「空のオブジェクト」をどのように定義しますか?
たとえば、変数が必要だが、実際にはオブジェクトを持ちたくない場合は、初期化せずに変数を宣言するだけです。
Name myName;
この場合myName
はnull
(または「未割り当て」? コンテキストによって異なります) になりますが、タイプにName
なり、後で (値が割り当てられると) そのように使用できます。
変数自体が行うことは、「オブジェクト」が存在するメモリ内の場所を指すことだけです。したがってName myName
、オブジェクトを「作成」するのではなく、メモリ位置へのポインターを作成するだけです。 new Name()
コンストラクターを呼び出して、実際にオブジェクトを作成します。例のように一緒に使用すると、後半はオブジェクトを作成し、前半はオブジェクトが存在するメモリ内の場所を指します。
空とは何を意味するかによって異なります。あなたがしたことは、オブジェクトのインスタンス化です。オブジェクト コンストラクターが Name オブジェクトのフィールドを初期化した場合、オブジェクト フィールドには値が割り当てられます。また、これらのフィールドのメモリは、new を呼び出したときに割り当てられました。したがって、それらに値を割り当てていなくても、実際にはメモリに存在しますが、単に初期化されていません。