目次 | |

10. その他の事項

10.1 java.beans.Beans

クラス java.beans.Beans は, 雑多なビーンズ制御メソッドをいくつか提供する。

メソッド isDesignTime 及びメソッド isGuiAvailable は, 振舞いを調整するために,ビーンが環境を試験することを可能にする。

10.2 java.beans.Visibility

ビーンには,クライアント GUI アプリケーション及び “不可視の”サーバアプリケションの両方で,実行されるものがあってもよい。 インタフェース java.beans.Visibility は,コンテナに対して, ビーンがサーバだけの環境にいるかどうかを,そのビーンに指示するようにさせる。

このインタフェースは,サーバ環境で違った振舞いを提供したいビーンだけが, サポートする必要がある。

10.3 ビーンのインスタンス化

ビーンは,直列化されたテンプレート(この場合には,ビーンのインスタンスを生成するためには, 非直列化をしなければならない。)又は実装クラス(この場合には,ビーンインスタンスは, 単に,クラスのインスタンスを生成することによって生成される。)のいずれかとして,配布可能とする。

プログラマが,単にクラスとして,ビーンを配布している場合には,“new”を使って, ビーンのインスタンスを生成できる。

	JellyBean fred = new JellyBean();

しかし,クラス又は直列化されたテンプレートの可能性があるビーンを配置するために使用できる, ユティリティメソッド“Beans.instantiate”も提供する。 Beans.instantiate は,与えられた名前が, 直列化されたテンプレート又はクラスのいずれを表現するかを検査する。 それが直列化されたテンプレートを表現している場合は,Beans.instantiate は, 与えられた ClassLoader コンテキスト内の直列化された形式の読込みを処理する。

例えば,次の例示コードにおいて,対象 ClassLoader が,直列化されたテンプレートファイル “acme.widgets.PurpleMutantWombat.ser”をもつ場合,Beans.instantiate は, そのテンプレートからビーンを読み込む。そうでないときには,クラス “acme.widgets.PurpleMutantWombat”を探す。

	ClassLoader cl = this.getClass().getClassLoader();
	MutantWombat w = (MutantWombat)Beans.instantiate(cl,
					"acme.widgets.PurpleMutantWombat");

Beans.instantiate は,新たに生成されたビーンが Applet かどうかを検査し, アプレットならば,それに,デフォルトの Applet コンテキストを提供する。

一般に,プログラマはビーンズを生成するときに,Beans.instantiate を使うほうがよい。 (ただし,これを要求はしない。)これは,Beans.instantiate が, ビーンの実装されている方法及び初期化される方法からの分離を提供することによる。

実装者が Beans.instantiate を,う(迂)回することを選択する場合は, その機能を,注意してエミュレートしなければならない。 例えば,アプレットであるビーンズに対してアプレットコンテキストを提供する,などとする。

10.4 Java Beanの多様な型ビューの獲得

Beans 1.0では,各ビーンは,一つのJavaオブジェクトで表現する。 しかし,Java Beansの将来の版では, より複雑なビーンに対するサポートを付加する可能性がある。 この場合,Javaオブジェクトの集合は,一つのビーンの全部分とする, 様々に型付けされたビューの集合を提供するために協調する。

そのために,Java Bean が対象インタフェースをサポートするかどうか, 又はアプリケーションプログラムが Java Bean を対象インタフェースにキャストしたいかどうか, をそのアプリケーションプログラムが決定したい場合には,メソッド Beans.instanceOf 及び Beans.getInstanceOf の使用を要求する。 これらのメソッドは,Beans 1.0 では,単に,オペレータJava“instanceof” を使って実装されている。 しかし,Java Beans API の発展に伴い,変化するかもしれない。 そこで,開発者は,アプリケーションコードを将来の拡張機能で動作可能とするために, 現在から,これらのメソッドを使用することが望ましい。

ビーンが特定のAPIをサポートするかどうかを調べようとする場合の,通常の方法は, 次による。

	DataseBaseAccessor x = getDBAccessor();
	java.awt.Component y = null;
	if (Beans.isInstanceOf(x, java.awt.Component.class) {
		y = (java.awt.Component) Beans.getInstanceOf(x, 
							java.awt.Component.class);
	}

10.5 その他の API

10.5.1 クラス Beans

public class java.beans.Beans 
	extends java.lang.Object

このクラスは,一般的な目的のビーンズ制御メソッドを提供する。

a) メソッド

10.5.2 インタフェース Visibility

public interface java.beans.Visibility

状況によっては,GUIを利用可能でないサーバ上で, ビーンは実行されるかもしれない。 このインタフェースは, ビーンが絶対にGUIを必要とするかどうか決定することをビーンに問い合わせ, ビーンにGUIが利用可能かどうかを助言するために使用できる。

このインタフェースは,専門の開発者用であって, 通常の単純なビーンに対しては必要としない。 エンドユーザを混乱させないために,これらのメソッドには, getXXX 及び setXXX 設計パタンの使用を避ける。

a) メソッド



目次 | |