6.IDL文法(2)
前章に引き続き、IDLの文法を解説します。
6.1 属性宣言
[readonly] attribute データ型 属性名;
属性はクラスにおけるインスタンス変数のようなものです。属性はインタフェース内で宣言します。宣言は以下の書式で行います。
readonly はその属性が読取専用であることを示します。データ型はIDLで利用できるすべてのデータ型を用いることができます。
属性が宣言されたインタフェースをJava-IDLコンパイラでコンパイルすると、インスタンス変数に変換されるのではなく、その属性の値を取得および設定する関数が生成されます。リモートに存在するオブジェクトの属性値は直接操作することができないので、関数によるラッピングが必要となるからです。
readonlyを指定した属性からは値を取得する関数のみ生成され、値を設定する関数は生成されません。
|
IDL
|
Java
|
module HumanResource{
interface Employee{
attribute long id;
attribute wstring name;
readonly attribute long age;
};
};
|
package HumanResource;
public interface EmployeeOperations{
public int id();
public void id(int newId);
public String name();
public void name(String newName);
public int age();
}
|
6.2 定数宣言
定数宣言は定数を定義します。定数として利用できるデータ型は以下のとおりです。
- 整数型 (long, short, unsigned long, unsigned short, long long)
- 浮動小数点型 (float, double, long double)
- 文字型 (char, wchar)
- ブーリアン型 (boolean)
- 文字列型 (string, wstring)
定数の宣言には const を用います。書式は以下の通りです。
const データ型 定数名 = 定数(または定数式);
右辺には単純な定数だけじゃなく、定数のみによる数式も記述することができます。数式は、IDLコンパイラによって自動的に計算される場合もありますし、数式のまま出力されることもあります。
定数宣言と、それをJava-IDLコンパイラによって生成されたJavaソースの例を示します。
|
IDL
|
Java
|
module Module1{
interface Sample{
const double PI = 3.14;
const long HOURS_PER_WEEK = 24*7;
};
};
|
package Module1;
public interface SampleOperations{
public final double PI = 3.14;
public final int HOURS_PER_WEEK = 24*7;
}
|