0

アイテムのリストを返すメソッドとのインターフェイスがあり、各アイテムには特定のメソッドが関連付けられている必要があります。たとえば、メソッドがアタッチされた一連の「アイテム」オブジェクトを返すメソッド listAllItems() を定義したい (そのため、クライアント プロセスでアイテムの 1 つを選択して itemone.buy() と言うことができます。たとえば、これにより、サーバー上で対応するメソッドが実行されます)。

CORBAでこれを行うことはできますか? 「インターフェース項目」を定義できず、他のインターフェースで「シーケンス」と言うことができないようです。

違いが生じる場合は、idl を Java にコンパイルします。

ありがとう!

4

2 に答える 2

1

Peyton が必要とする情報 (IDL シーケンスと Java セット型の間の概念マッピング) は、このマニュアルの物理ページ 42、インデックス付きページ 23 にあります。

http://www.omg.org/spec/I2JAV/1.3/

そして、彼の質問に答えるために、明らかに、java は typedef であっても、実際にはシーケンス オブジェクトを指定しません。もちろん、手動で行うこともできます。しかし、idlj によって自動的に行われることに依存したい場合は、<ObjectType>Helper.java のメソッドを使用する必要があります。これらは <ObjectType>[] 型の単純な配列で機能し、getter と setter を含みます。

簡単に言えば:idlが含まれている場合

struct MyObject
{
  long my_int;
};
typedef sequence<MyObject> MyObjects;
interface HasArray
{
  attribute MyObjects some_stuff;
};

次に、Java 実装には以下が必要です。

public class HasArrayImpl extends HasArrayPOA
{
  private List<MyObject> local_storage;

  /** getter */
  MyObject[] some_stuff()
  {
    /* ... */
  }

  /** setter */
  void some_stuff(MyObject[] newSome_stuff)
  {
    /* ... */
  }
}

内部では、Java が MyObjectsHelper と MyObjectsHolder を作成します。

于 2013-04-07T17:14:44.477 に答える
0

できますよ。

効果がないと言う理由を詳しく説明する必要があります。しかし、私は定期的に一連のインターフェースを含む IDL を使用しています。

于 2010-09-15T22:40:49.463 に答える