Hitachi

VisiBroker Version 5 Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド


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);
   . . .
}