rJava:调用Java函数来检索对象列表

时间:2015-03-06 19:12:51

标签: rjava

我需要从R获取来自Java的对象列表。在下面的代码中,我成功地获取了R中的列表(列表的长度是正确的)但我看不到对象的内容。

此类表示对象:

package mypackage;
public class ValueObject 
    public String s;
    public int i;
}

该类返回对象列表:

package mypackage;
public class MyClass {

    public ValueObject [] test(){

        ValueObject [] array = new ValueObject [3];

        ValueObject a = new ValueObject();
        a.i = 1;
        a.s = "A";
        array[0] = a;

        ValueObject b = new ValueObject();
        b.i = 2;
        b.s = "B";
        array[1] = b;

        ValueObject c = new ValueObject();
        c.i = 3;
        c.s = "C";
        array[2] = c;

        return array;
    }
}    

我在R中运行它,就像这样:

obj = .jnew("mypackage/MyClass")
x = .jcall(obj,"[Lmypackage/ValueObject;","test")

print(length(x))显示3,表示对象在那里。但我无法弄清楚如何访问对象中的数据。我试过了:

x[1]$s
x[1]["s"]
x[1]@s

并始终为NULL。这段代码有什么问题?

1 个答案:

答案 0 :(得分:1)

这就是诀窍:

print(x[[1]]$s)