2

私は現在、java/lang/Vector クラスを利用する Java .jar を使用する R スクリプトをプログラミングしています。この場合、ネイティブではないメソッドでクラスを使用します。Java ソースコード:

public static Vector<ClassName> methodname(String param)

rJava のドキュメントには、vector のようなテンプレート クラスの処理方法や、jcall などのメソッドを使用するときに何を記述するかについて、何も見つかりませんでした。私は現在、次のようなことをしようとしています:

v <- .jnew("java/util/Vector")
b <- .jcall(v, returnSig = "Ljava/util/Vector", method = "methodname",param)

しかし、R は明らかに例外をスローします。

method methodname with signature (Ljava/lang/String;)Ljava/util/Vector not found

テンプレート クラスをこのコマンドに組み込むにはどうすればよいですか? または、そもそも特定のクラスのベクトルを作成するにはどうすればよいですか? これは可能ですか?

4

1 に答える 1

1

rJavaは Java ジェネリックを認識していませんVector。特定の型の を作成する構文はありません。Vectorののみ作成できますObject

システムを使用できるのに、なぜ古い.jcallAPIに固執するのですかJ。これにより、Javaオブジェクトをよりうまく使用できます。

> v <- new( J("java.util.Vector") )
> v$add( 1:10 )
[1] TRUE
> v$size()
[1] 1
# code completion
> v$
v$add(                 v$getClass()           v$removeElement(
v$addAll(              v$hashCode()           v$removeElementAt(
v$addElement(          v$indexOf(             v$retainAll(
v$capacity()           v$insertElementAt(     v$set(
v$clear()              v$isEmpty()            v$setElementAt(
v$clone()              v$iterator()           v$setSize(
v$contains(            v$lastElement()        v$size()
v$containsAll(         v$lastIndexOf(         v$subList(
v$copyInto(            v$listIterator(        v$toArray(
v$elementAt(           v$listIterator()       v$toArray()
v$elements()           v$notify()             v$toString()
v$ensureCapacity(      v$notifyAll()          v$trimToSize()
v$equals(              v$remove(              v$wait(
v$firstElement()       v$removeAll(           v$wait()
v$get(                 v$removeAllElements()  
于 2012-11-19T11:30:18.487 に答える