2012-11-19 32 views
2

我目前編程的R-腳本使用Java的.jar,使得用Java /郎/ Vector類中,在這種情況下使用類在一個非本地的方法中。在Java源代碼:rJava:使用Java /郎/矢量具有一定的模板類

public static Vector<ClassName> methodname(String param) 

我什麼也沒發現rJava對如何處理模板類象載體和使用什麼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 

如何工作的模板類到這個命令?或者就此而言,我該如何創建一個特定類的矢量呢?這可能嗎?

回答

1

rJava不知道Java泛型,沒有語法,將創建一個給定類型的Vector。您只能創建Vector S的Object秒。

你爲什麼用舊.jcall API堅持時,你可以使用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() 
+1

謝謝你,爲J真正做起來要容易得多。 – Kirex