rJava:从R创建零长度Java数组

rJava:从R创建零长度Java数组,java,arrays,r,java-native-interface,rjava,Java,Arrays,R,Java Native Interface,Rjava,我正在寻找与之相当的: String[] s; s= new String[0]; 我试过: library(rJava) .jinit() s=.jarray(list(NULL), "[Ljava/lang/String;") 但是,当将其传递给一个方法时,rJava会引发一个错误,该方法需要使用jcall(…,s)的String[] 更新 让我的问题更清楚。 当然,我可以轻松地创建一个新的jar(或修改现有的jar)来承载一些zeroArray()方法,以便以后从R调用,但我正在寻找一

我正在寻找与之相当的:

String[] s;
s= new String[0];
我试过:

library(rJava)
.jinit()
s=.jarray(list(NULL), "[Ljava/lang/String;")
但是,当将其传递给一个方法时,rJava会引发一个错误,该方法需要使用
jcall(…,s)
String[]

更新 让我的问题更清楚。

当然,我可以轻松地创建一个新的jar(或修改现有的jar)来承载一些
zeroArray()
方法,以便以后从R调用,但我正在寻找一个基于rJava的解决方案,这意味着使用标准Java对象或rJava提供的jar文件中的类或内部rJava函数

如果我有这样的东西:

package utils;

public class RUsingStringArray {

        public void useArray(String [] array) {
          for(int i=0; i<array.length; i++ ) {
            String str = array[i];
          }
        }
        public int arrayLen(String [] array) {
                System.out.println("Class: " + array.getClass());
                return array.length;
        }
        public String [] createArray() {
                return new String[0];
        }
        public static void main(String [] arg) {

                RUsingStringArray obj = new RUsingStringArray();
                obj.useArray(obj.createArray());
                System.out.println("Len: " + obj.arrayLen(new String[0]) );
        }
}
当然,这个也会起作用

> b <- character(0)
> .jcall(obj, returnSig="V", method = "useArray", b)
b.jcall(obj,returnSig=“V”,method=“useArray”,b) 问题是,这是否是你们正在寻找的东西

更新:

那样的话,也许这对你来说更好

> array <- .jarray(list(NULL), "java/lang/String")
> .jcall(obj, returnSig="V", method="useArray", array)
>array.jcall(obj,returnSig=“V”,method=“useArray”,array)
更新2:

这个怎么样;)

>array2.jcall(obj,returnSig=“I”,method=“arrayLen”,array2)
Class:Class[Ljava.lang.String;
[1] 0
>

谢谢,但实际上我正在寻找rJava解决方案。我在更新后更清楚地说明了这一点。如果一开始不清楚,很抱歉。使用:
public int-useArray(String[]ar){return ar.length;}
进行测试,并调用
.jcall(obj,returnSig=“I”,method=“useArray”,array)
返回
1
,如果
String[]array=new String[0];
.oOo。我这边还有一个;).oOo.Great!很好!在你了解sol之后,显然很简单)
> b <- character(0)
> .jcall(obj, returnSig="V", method = "useArray", b)
> array <- .jarray(list(NULL), "java/lang/String")
> .jcall(obj, returnSig="V", method="useArray", array)
> array2 <- .jarray(character(0), "java/lang/String")
> .jcall(obj, returnSig="I", method="arrayLen", array2)
Class: class [Ljava.lang.String;
[1] 0
>