2012-11-19 33 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