Holderクラスは,OUTおよびINOUTパラメタ受け渡しモードをサポートし,org.omg.CORBAパッケージのすべての基本IDLデータ型で利用できます。Holderクラスは,typedefsで定義されたものを除いて,すべての名前付きユーザ定義型で生成されます。Holderクラスの詳細については,「3. 生成されるインタフェースとクラス(Java)」を参照してください。
ユーザ定義IDL型では,Holderクラス名は,その型のマッピングされたJava名の後ろにHolderを付けて構成されます。
基本IDLデータ型では,マッピングされたデータ型に対するJava型名(最初の文字が大文字)の後ろにHolderを付けたHolderクラス名になります。例えば,IntHolderがそうです。
各Holderクラスには,インスタンスからのコンストラクタ,デフォルトコンストラクタがあり,型付きのvalueというパブリックインスタンスメンバがあります。デフォルトコンストラクタは,Java言語によって定義されたように,値フィールドを型のデフォルト値に設定します。
ポータブルスタブ,およびスケルトンをサポートするには,ユーザ定義型のHolderクラスもorg.omg.CORBA.portable.Streamableインタフェースをインプリメントします。
基本型のHolderクラスは,次のコードサンプルで定義されます。これらはorg.omg.CORBAパッケージにあります。
//Java
package org.omg.CORBA;
final public class ShortHolder implements Streamable {
public short value;
public ShortHolder( ){}
public ShortHolder(short initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class IntHolder implements Streamable {
public int value;
public IntHolder( ){}
public IntHolder(int initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class LongHolder implements Streamable {
public long value;
public LongHolder( ){}
public LongHolder(long initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class ByteHolder implements Streamable {
public byte value;
public ByteHolder( ){}
public ByteHolder(byte initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class FloatHolder implements Streamable {
public float value;
public FloatHolder( ){}
public FloatHolder(float initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class DoubleHolder implements Streamable {
public double value;
public DoubleHolder( ){}
public DoubleHolder(double initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class CharHolder implements Streamable {
public char value;
public CharHolder( ){}
public CharHolder(char initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class BooleanHolder implements Streamable {
public boolean value;
public BooleanHolder( ){}
public BooleanHolder(boolean initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class StringHolder implements Streamable {
public java.lang.String value;
public StringHolder( ){}
public StringHolder(java.lang.String initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class ObjectHolder implements Streamable {
public org.omg.CORBA.Object value;
public ObjectHolder( ){}
public ObjectHolder(org.omg.CORBA.Object initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class ValueBaseHolder implements Streamable {
public java.io.Serializable value;
public ValueBaseHolder( ){}
public ValueBaseHolder(java.io.Serializable initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class AnyHolder implements Streamable {
public Any value;
public AnyHolder( ){}
public AnyHolder(Any initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class TypeCodeHolder implements Streamable {
public TypeCode value;
public typeCodeHolder( ){}
public TypeCodeHolder(TypeCode initial){
value =initial;
}
...//implementation of the streamable interface
}
final public class PrincipalHolder implements Streamable {
public Principal value;
public PrincipalHolder( ){}
public PrincipalHolder(Principal initial){
value =initial;
}
...//implementation of the streamable interface
}
ユーザ定義型<foo>のHolderクラスを次に示します。
// Java
final public class <foo>Holder
implements org.omg.CORBA.portable.Streamable {
public <foo> value;
public <foo>Holder( ) {}
public <foo>Holder(<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( ) {...}
}