元の編集されていない質問のコードでは、 java.util.ArrayList オブジェクトに要素が追加されることはありません。
java.util.List<String> list = new java.util.ArrayList<String>();
Object[] array = list.toArray(); // array.length = 0
IDataCursor cursor = pipeline.getCursor();
IDataUtil.put(cursor, "array", array);
IDataUtil.put(cursor, "array.length", array.length);
cursor.destroy();
Designer の [Service Result] タブのスクリーンショットは、サービスListOfFileNames
によって正しく返されたことを実際に示しているため、コードの一部が機能しています。返されなかった場合、サービス結果タブにまったく表示されないため、これはわかっています。そこに記載されているということは、正しく返却されたことを意味します。
しかし、機能していないと思われる理由ListOfFileNames
は、 が長さゼロの配列であるためです。そのため、Designer には [サービスの結果] タブの右側の列に表示する値がありません。ArrayList
を呼び出す前に少なくとも 1 つの要素を に追加していた場合.toArray()
、Designer は結果として得られる配列の内容を表示します。
Designer のスクリーンショットで気付いたもう 1 つの問題ListOfFileNames
はObject[]
、String[]
. .toArray()
これは、 を返す引数なしで使用しているためですObject[]
。次のように、別のバージョンの を使用して、.toArray(T[] a)
確実に がString[]
返されるようにします。
java.util.List<String> list = new java.util.ArrayList<String>();
list.add("item1");
String[] array = list.toArray(new String[0]); // array.length = 1
IDataCursor cursor = pipeline.getCursor();
IDataUtil.put(cursor, "array", array);
IDataUtil.put(cursor, "array.length", array.length);
cursor.destroy();