JavaObject ステレオタイプが指定された ExternalType パーツは、外部 Java™ クラスまたはインターフェースに EGL コードからアクセスする方法を定義します。 このパーツは通常、クラスまたはインターフェースのすべての公開フィールド、メソッド、およびコンストラクターを示していますが、一部の対象を示す場合もあります。

EGL は Serializable 外部型を事前定義します。これは java.io.Serializable インターフェースを実装する Java クラスに基づく外部型を定義する場合に参照できます。 定義する外部型が EGL Serializable 外部型を拡張しない場合、その外部型に基づくすべての EGL 変数は、生成される Java コードでは「一時的」とマークが付けられます。 一時変数は、Java オブジェクトがアプリケーション・サーバーなどのランタイム・プラットフォームにより直列化されるときには保存されません。 例えば、直列化は、シャットダウンに応じてサーバーがオブジェクトのバックアップ・コピーを作成する場合に行われることがあります。
この関数は、プリミティブ型値または配列を返すことができます。あるいは値をまったく返さない場合もあります。 この関数はレコードは返すことができません。
Function nextElement() { JavaName = "next" };
変数宣言には、以下のプロパティーを組み込むこともできます。
UpperLimit INT { @JavaProperty{} };
getMethod が指定されているが setMethod が指定されていない場合、フィールドは読み取り専用になり、setMethod が定義されているが getMethod が定義されていない場合、フィールドは書き込み専用になります。 読み取り専用フィールドの値を設定しようとしたり、書き込み専用フィールドの値を取得したりしようとすると、エラーが発生します。
例えば、java.beans パッケージについて考慮してみましょう。これは Java 開発者が、一般に Java Bean、または単に Bean として知られている、一種の Java クラスのコーディングに使用するものです。 機能の 1 つとして、Bean はランタイム・イベントに応じて Java オブジェクトのメソッドを呼び出すことができます。 この説明の残りの部分では、ランタイム・イベントは Bean のプロパティー値の変更であると想定しています。 .
Java デベロッパーは、そのイベントのタイプを、Bean の addPropertyChangeListener メソッドを呼び出し、PropertyChangeListener オブジェクトを渡すことによって登録します。 一般的な表現で言えば、PropertyChangeListener オブジェクトはイベント・ハンドラー です。
プロパティー値を変更した後に、Bean はイベント・リスナーを呼び出します。 特に、Bean は PropertyChangeListener オブジェクトの propertyChange メソッドを呼び出し、変更に関する詳細を提供する PropertyChangeEvent オブジェクトを渡します。
詳細とは、イベント・リスナーが Java インターフェースに基づいており、propertyChange メソッドがビジネス・アプリケーションに固有であるということです。 EGL デベロッパーが @eventListener プロパティーを使用するということは、EGL 生成の propertyChange メソッドが、デベロッパーがコーディングした EGL 関数から派生するロジックを呼び出すことを意味します。
現在の例では、addMethod の値は「addPropertyChangeListener」です。
現在の例では、listenerType の値は「java.beans.PropertyChangeListener」です。
現在の例では、method の値は「propertyChange」です。
ExternalType MyBean type JavaObject
onPropertyChange PropertyChangeDelegate
{ @eventListener{ addMethod = "addPropertyChangeListener",
listenerType = "java.beans.PropertyChangeListener",
method = "propertyChange" } };
end
onPropertyChange フィールドは Bean 内にありませんが、存在しており、リスナー・パターンは EGL コードで入手可能です。そこではイベントの発生時に呼び出される EGL 関数を割り当てます。
Delegate PropertyChangeDelegate( evt PropertyChangeEvent in )
end
ExternalType PropertyChangeEvent type JavaObject { packageName = "java.beans" }
function getPropertyName() returns ( string );
// You might make available other methods of java.beans.PropertyChangeEvent.
end
program MyEGLProgram
function main()
mb MyBean{ onPropertyChange = propChange };
end
function propChange( evt PropertyChangeEvent in )
writeStdout( "Property " :: evt.getPropertyName() :: " has changed." );
end
end
このプログラムは、タイプ MyBean の変数を作成し、関数をそのタイプの onPropertyChange フィールドに割り当て、関数自体を定義します。 Bean 内でプロパティー値が変更されると、関数が呼び出され、getPropertyName が使用されます。これは PropertyChangeEvent オブジェクトから使用可能にされた 1 メソッドです。
@eventListener プロパティーは必ず、委譲パーツに基づく変数に割り当てます。 委譲パーツの特性は、propertyChange などのイベント処理メソッドに準拠する必要があります。これは PropertyChangeListener などの特定の Java イベント・リスナー内にあります。
コード内の Java フィールドとメソッド名を参照する場合は、同等の EGL 名であるとしてもそうでないとしても、それらは大/小文字を区別することに留意してください。