[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00260] Re: インスタンスの処理について



横山さん、こんにちは

大崎と申します。

> 行いたいことは
> newによって生成されたインスタンスを消去したい。あるいは
> コンストラクタを初期化する方法ということになると思います。

JavaはGC(ガーベッジコレクション、ごみ集め方式)を使ってメモリを管理してい
ます。newによって生成されたインスタンスは誰も使わなくなったら、(いつか)
勝手に消去されます。
つまり、だれからも参照されないようにすれば良いのです。
たとえば、

Data data = new Data();
....
data = null;

通常は、data = null という代入をしなくても、dataという変数が使われなく
なったら(スコープから出たら)勝手に消去されるので、普通は意識しなくても良
いはずです。

> このDataクラスのウィンドウをウィンドウの右上すみにあるXボタンあるいは
> 終了ボタンを押して、このDataクラスのウィンドウだけ消去したいのです。
> しかし、現在私の作成した方法ではwindowの表示/非表示となります。
> というのも
> テキストフィールドに入力した文字列がウィンドウを消して
> 表示させたときに入力された状態で表示されます。

察しの通り、Xボタンを押してもDataクラスのインスタンスは(メモリ中から)削
除されません。それは、dataという変数がそのインスタンスを参照しているから
です。
そして、同じインスタンスに対してshow()しているのだから、当然、同じウィン
ドウが再び表示されるのです。
この場合は、Xボタンが押されて、再びウィンドウを表示する場合には新たに
Dataクラスのインスタンスを作成する必要があります。
結局、Xボタンが押されたときにdata = null という代入を入れれば、希望通り
の動作になるのではないかと思います。



-- 
/** 大崎 洋平 (Yohei Osaki)
 * @e-mail osaki@xxxxxxxxxxxxxx
 *
 * XML Based Application Architecture (XAA)
 * http://www.logic-design.co.jp/XAA/
 */