IDLのインタフェースは,次に示す二つのJavaパブリックインタフェースにマッピングされます。
拡張子Helperの付いた追加Helperクラス名がインタフェース名に付加されます。Javaインタフェースはマッピングしたベースインタフェースorg.omg.CORBA.Objectを継承します。
Javaインタフェースは,マッピング後のオペレーションシグニチャを格納します。メソッドは,Javaインタフェースのオブジェクトリファレンスについて呼び出せます。
Helperクラスは静的narrowメソッドを宣言します。このメソッドによって,org.omg.CORBA.Objectのインスタンスをさらに詳細な型のオブジェクトリファレンスにナロウイングできます。オブジェクトリファレンスが要求型をサポートしていないためナロウイングに失敗すると,IDL例外CORBA::BAD_PARAMが発生します。別の種類のエラーを報告するためには,異なるシステム例外が発生します。nullのナロウイングは常にnullを返して成功します。
特別な「nil」オブジェクトリファレンスはありません。Javaのnullは,オブジェクトリファレンスに,いつでも自由に渡されます。
属性はJavaアクセッサと変更メソッドのペアにマッピングされます。これらのメソッドにはIDL属性と同じ名前があり,オーバーロードされます。IDL readonly属性に対する変更メソッドはありません。
interfaceのHolderクラスも生成されます。その名前は,次のようにインタフェースがマッピングされたJavaクラス名の後ろにHolderを付けたものです。
final public class <interface_class>Holder
implements org.omg.CORBA.portable.Streamable {
public <interface_class> value;
public <interface_class>Holder( ) {}
public <interface_class>Holder(
<interface_class> initial) {
value = initial;
}
public void _read(org.omg.CORBA.portable.InputStream i)
{...}
public void _write(
org.omg.CORBA.portable.OutputStream o)
{...}
public org.omg.CORBA.TypeCode _type( ) {...}
}
/*From Example.idl:*/
module Example {
interface Foo {
long method(in long arg)raises(AnException);
attribute long assignable;
readonly attribute long nonassignable;
};
};
//Generated java
package Example;
public interface Foo extends
com.inprise.vbroker.CORBA.Object,
Example.FooOperations,
org.omg.CORBA.portable.IDLEntity {
}
public interface FooOperations {
public int method(int arg) throws Example.AnException;
public int assignable( );
public void assignable(int assignable);
public int nonassignable( );
}
public final class FooHelper {
//...other standard helper methods
public static Foo narrow(org.omg.CORBA.Object obj)
{...}
public static Example.Foo bind(org.omg.CORBA.ORB orb,
java.lang.String name,
java.lang.String host,
com.inprise.vbroker.CORBA.BindOptions _options)
{...}
public static Example.Foo bind(org.omg.CORBA.ORB orb,
java.lang.String fullPoaName, byte[ ] oid)) {...}
public static Example.Foo bind(org.omg.CORBA.ORB orb,
java.lang.String fullPoaName,byte[ ] oid,
java.lang.String host,
com.inprise.vbroker.CORBA.BindOptions _options)
{...}
public Foo read(org.omg.CORBA.portable.InputStream in)
{...}
public void write(org.omg.CORBA.portable.OutputStream
out, Foo foo) {...}
public Foo extract(org.omg.CORBA.Any any) {...}
public void insert(org.omg.CORBA.Any any, Foo foo)
{...}
}
public final class FooHolder
implements org.omg.CORBA.portable.Streamable {
public Foo value;
public FooHolder( ) {}
public FooHolder(final Foo initial) {...}
public void _read(org.omg.CORBA.portable.InputStream i)
{...}
public void _write(
org.omg.CORBA.portable.OutputStream o)
{...}
public org.omg.CORBA.TypeCode_type( ) {...}
}