クライアント/サーバ間のインタフェースで使用できるデータ型について説明します。
Home/Remoteインタフェースで、メソッドの復帰値およびパラメタに定義できる型を以下に示します。定数(public static finalフィールド)にはプリミティブ型またはString型が定義できます。
ここで定義した型の中でアプリケーション実行時に通信できる型については、“アプリケーション実行時に通信できる型”を参照してください。
以下のJavaプリミティブ型はすべて定義できます。
void
boolean
char
byte
short
int
long
float
double
すべてのインタフェースを定義できます。ただし、java.rmi.Remoteインタフェースを継承する場合は、定義したすべてのメソッド(継承メソッドを含む)がjava.rmi.RemoteExceptionまたはjava.rmi.RemoteExceptionのスーパークラスを例外としてthrowするように定義してください。
また、インタフェースを複数継承する場合、継承されるインタフェース間で同名のメソッドが存在しないように定義してください。
すべてのクラスを定義できます。ただし、実装するインタフェースにはjava.rmi.Remoteインタフェースを直接的にも間接的にも継承しないインタフェースを定義してください。
Home/Remoteインタフェースで定義できる型の配列も定義できます。
すべての例外を定義できます。
アプリケーション実行時に通信できる型を以下に示します。ここで示す型以外を通信すると実行時に通信エラーとなります。
以下のJavaプリミティブ型はすべて定義できます。
void
boolean
char
byte
short
int
long
float
double
以下のインタフェースを通信できます。
java.rmi.Remoteインタフェースを継承し、すべてのメソッド(継承メソッドを含む)がjava.rmi.RemoteException、またはjava.rmi.RemoteExceptionのスーパークラスを例外としてthrowするインタフェース
以下のクラスを通信できます。
java.io.Serializableインタフェースを直接的または間接的に実装するクラスで、java.rmi.Remoteインタフェースを直接的にも間接的にも実装しないクラス
注意
java.io.Serializableインタフェースを直接実装していないクラスを通信した場合、ClassCastExceptionが発生します。
java.io.Serializableインタフェースを間接的にも実装していないクラスを通信した場合、org.omg.CORBA.MARSHALが発生します。
アプリケーション実行時に通信できる型の配列も通信できます。
以下の例外(java.rmi.RemoteExceptionとそのサブクラスを除く)を通信できます。
java.lang.Errorまたはjava.lang.RuntimeExceptionを直接的にも間接的にも継承しない例外