2.6 Helperクラス
すべてのユーザ定義IDL型には,生成された型名の後ろにHelperが付いた,追加の「helper」Javaクラスがあります。型を処理するために必要な幾つかの次のような静的メソッドが提供されています。
-
型のAny挿入,および抽出オペレーション
-
リポジトリIDの取得
-
タイプコードの取得
-
ストリームからの型の読み出し,またはストリームへの型の書き込み
ユーザ定義IDL型<typename>では,型用に生成された次のJavaコードがあります。マッピングされたIDLインタフェースのHelperクラスには,専用のnarrowオペレーションがあります。
abstract interfaceを継承するinterfaceを使用している,かつ,そのinterfaceのHelperクラスのnarrowオペレーションの引数にnullを指定した場合に,BAD_PARAM例外が発生します。
- コードサンプル2-4 Helperクラス:ユーザ定義型に生成されたJavaコード
// generated Java helper public class <typename>Helper { public static void insert(org.omg.CORBA.Any a, <typename> t); public static <typename> extract(org.omg.CORBA.Any a); public static org.omg.CORBA.TypeCode type( ); public static String id( ); public static <typename> read( org.omg.CORBA.portable.InputStream istream); {...} public static void write( org.omg.CORBA.portable.OutputStream ostream, <typename> value) {...} // only for interface helpers public static <typename> narrow(org.omg.CORBA.Object obj); }
- コードサンプル2-5 名前付き型のJava Helperクラスへのマッピング
// IDL - named type struct st {long f1, String f2}; // generated Java public class stHelper { public static void insert(org.omg.CORBA.Any any, st s); {...} public static st extract(org.omg.CORBA.Any a) {...} public static org.omg.CORBA.TypeCode type( ) {...} public static String id( ) {...} public static st read( org.omg.CORBA.InputStream is) {...} public static void write(org.omg.CORBA.OutputStream os, st s) {...} }
- コードサンプル2-6 typedef列のJava Helperクラスへのマッピング
// IDL - typedef sequence typedef sequence <long> IntSeq; // generated Java helper public class IntSeqHelper { public static void insert(org.omg.CORBA.Any any, int[ ] seq); public static int[ ] extract(org.omg.CORBA.Any a){...} public static org.omg.CORBA.TypeCode type( ){...} public static String id( ){...} public static int[ ] read( org.omg.CORBA.portable.InputStream is) {...} public static void write( org.omg.CORBA.portable.OutputStream os, int[ ] seq) {...} }