オブジェクト制御機能を利用した開発は、まず、各オブジェクトをObjectの派生クラスで定義し、次にJFCObjectLoaderManagerの派生クラスに登録するという手順を踏みます。
オブジェクト制御機能を利用した開発の流れは以下のとおりです。
オブジェクト制御機能で利用するオブジェクトを、Objectの派生クラスとして作成します。
JFCObjectLoaderManagerの派生クラスを定義し、各オブジェクトを登録します。
addメソッドを使用して、各オブジェクトを登録します。
オブジェクトを登録するとき、オブジェクト名は各オブジェクトごとに固有の名前を指定し、名前の重複がないようにします。
getObjectメソッドを利用して、オブジェクトを取得します。
オブジェクトの生成タイミングをDELAYED_CREATIONに指定した場合は、あらかじめrealizeObjectを呼び出します。
オブジェクトに関する制御を行います。
最後に、releaseObjectメソッドを利用して、破棄タイミングに応じてオブジェクトを破棄します。
JFCObjectLoaderManagerの派生クラスとしてObjectManagerを定義し、java.awt.Buttonの派生クラスとしてSubButtonを定義した場合の例を以下に示します。
//JFCObjectLoaderManagerの派生クラス
public class SubObjectManager extends JFCObjectLoaderManager
{
public SubObjectManager()
{
this.add("ボタン1", "SubButton",JFCObjectLoader.DELAYED_CREATION,JFCObjectLoader.TEMPORARY_INSTANCE);
//addの引数では
//1番目がオブジェクト名
//2番目が作成したオブジェクトのクラス名、
//3番目がオブジェクトの生成タイミング
// 上記ではオブジェクトがrealizeObjectメソッドを呼び出し時にオブジェクトを生成します。
// 指定可能な生成タイミングは以下の[生成タイミング一覧]を参照
//4番目がオブジェクトの破棄タイミング
// 上記ではオブジェクトがreleaseObjectメソッドを呼び出し時にオブジェクトを破棄します。
// 指定可能な破棄タイミングは以下の[破棄タイミング一覧]を参照
//他のオブジェクトの登録も以上の手順と同じように登録します。
this.add(......);
....
}
}
//アプレットの派生クラス
public class SubApplet extends Applet
{
public void 任意のメソッド()
{
//オブジェクトを生成して、アプレットに貼り付けます。
objectManager.realizeObject("ボタン1");
SubButton subButton = (SubButton)objectManager.getObject("ボタン1");
this.add(subButton);
//なんらかの処理を行います。
....
//アプレットからオブジェクト剥がして、このオブジェクトを破棄します。
this.remove(subButton);
subButton = null;
objectManager.releaseObject("ボタン1");
....
}
} |
タイミング名 | 指定するクラス変数名 | 説明 |
|---|---|---|
初期化時 | JFCObjectLoader.INIT_CREATION | addメソッドが実行された時点でオブジェクトを生成します。 |
realizeObjectを呼出し時 | JFCObjectLoader.DELAYED_CREATION | realizeObjectメソッドを呼び出し時にオブジェクトを強制生成します。 |
バックグラウンド | JFCObjectLoader.BACKGROUND_CREATION | addメソッドが実行された時、アプリケーション、アプレットとは別スレッドでオブジェクトを生成します。 |
タイミング名 | 指定するクラス変数名 | 説明 |
|---|---|---|
releaseObject呼出し時 | JFCObjectLoader.TEMPORARY_INSTANCE | releaseObjectメソッドを呼び出したときに、オブジェクトをメモリから破棄します。 |
releaseObject呼出し時にバッファに保持 | JFCObjectLoader.BUFFERED_INSTANCE | releaseObjectメソッドを呼び出したときに、オブジェクトをバッファに保持します。バッファがいっぱいになった場合は、一番最初に保持したオブジェクトから順にメモリから破棄します。 |
常に保持 | JFCObjectLoader.PERMANENT_INSTANCE | 各オブジェクトを管理するJFCObjectLoaderManagerの派生クラスが破棄されるまでオブジェクトをメモリ上に保持します。 |
注意
オブジェクト制御機能を利用するアプレットについて
オブジェクト制御機能を利用するアプリケーションあるいはアプレットは、JFCObjectLoaderのsetURLsまたはaddURLメソッドを利用して、他の位置に保存しているオブジェクトクラスをロードすることが可能です。アプレットで利用する場合、そのアプレットをダウンロードしてきたサーバ以外のホストとの通信ができないため、URLに設定できるのはアプレットがあるサーバのみとなります。アプリケーションでは、この制限はありません