17.3.9 Anyクラスを使用して型を保護した状態で引き渡す
このクラスは,IDL指定型を保持し,タイプセーフ方式で引き渡せるようにするために使用します。
- 〈この項の構成〉
(1) C++の場合
このクラスのオブジェクトは,含まれているオブジェクトの型を定義するTypeCodeのポインタと,その含まれたオブジェクトのポインタを持ちます。オブジェクトの値と型を初期化し照会するメソッドだけでなく,オブジェクトの構築,コピー,および解放を行うメソッドも提供されます。さらに,オブジェクトをストリームに書き込んだり,ストリームから読み取ったりするストリームメソッドも提供されます。コードサンプル17-14に定義例を示します。
- コードサンプル17-14 Anyクラス(C++)
class Any { public: . . . CORBA_TypeCode_ptr type(); void type(CORBA_TypeCode_ptr tc); const void *value() const; static CORBA::Any_ptr _nil(); static CORBA::Any_ptr _duplicate(CORBA::Any *ptr); static void _release(CORBA::Any *ptr); . . . }
(2) Javaの場合
このクラスのオブジェクトは,含まれているオブジェクトの型を定義するTypeCodeのリファレンスと,その含まれたオブジェクトのリファレンスを持ちます。オブジェクトの値と型を初期化し照会するメソッドだけでなく,オブジェクトの構築,コピー,および解放を行うメソッドも提供されます。さらに,オブジェクトをストリームに書き込んだり,ストリームから読み取ったりするストリームメソッドも提供されます。コードサンプル17-15に定義例を示します。
- コードサンプル17-15 Anyクラス(Java)
package org.omg.CORBA; public abstract class Any { public abstract TypeCode type(); public abstract void type(TypeCode type); public abstract void read_value(InputStream input, TypeCode type); public abstract void write_value(OutputStream output); public abstract boolean equal(Any rhs); . . . }