Swig を使用して Java インターフェイスを作成しています。基本的に、C++ にはテンプレートがあります (
template<class T> class TSizedArray
{
int GetLength();
T* GetElements() const;
...
}
class Producer
{
TSizedArray<long> GetLongs();
...
}
このテンプレートは、SWIG 経由で Java にエクスポートする必要がある API のいくつかの関数の戻り値として使用されます。ただし、Java では、この単純なラッパーの代わりにネイティブ Java 配列を使用したいと考えています。
Java:
long[] result = Producer.GetLongs();
SWIGでこれを達成する方法がわかりません。テンプレートには複数のインスタンスがあり、異なるクラスの複数のメソッドの入力および出力として使用されます。私は使用できました:
%typemap(jstype) TCustomElementList "long[]"
生成された Java インターフェイスを long[] GetLongs() として取得しますが、生成された実装は TCustomElementList 型の新しいオブジェクトを作成します。
アイデアをありがとう。