如何用零值调用RJava中的varargs方法?

时间:2015-08-23 16:23:45

标签: rjava

我正在开发一个使用RJava进行标识符映射的包(在生物学中):BridgeDbR。其中一个方法调用Java方法,该方法具有vargs,mapID():

xref <- .jnew("org/bridgedb/Xref", identifier, datasource)
datatarget <- getDataSource(code=target)
targets = .jarray(c(datatarget), contents.class="org/bridgedb/DataSource")

这里getDataSource()方法返回一个类型为org.bridgedb。DataSource的Java对象。

然后进行实际的兴趣调用,其中(如上所示)xref和target是Java对象,mapper也是Java对象,见下文:

mappings = mapper$mapID(xref, targets)

此映射器对象是IDMapper接口的实例,并使用vargs定义mapID()方法:

public Set<Xref> mapID (Xref ref, DataSource... tgtDataSources)
  throws IDMapperException;

现在,我想在没有数据源的情况下调用此方法。在Java中我会这样做:

someMapper.mapID(someXref)

...... Java找到了这个方法。

但是,我无法弄清楚如何在RJava中执行此操作。以下变体都不起作用(例如.jarray(c(),contents.class =“org / bridgedb / DataSource”)返回NULL):

mappings = mapper$mapID(xref, c())
mappings = mapper$mapID(xref)
mappings = mapper$mapID(xref, NULL)
mappings = mapper$mapID(xref, .jarray(c(), contents.class="org/bridgedb/DataSource"))

.jmethods(mapper,name =“mapID”)的输出是:

[1] "public java.util.Set org.bridgedb.rdb.SimpleGdbImplCommon.mapID(org.bridgedb.Xref,org.bridgedb.DataSource[]) throws org.bridgedb.IDMapperException"
[2] "public java.util.Map org.bridgedb.rdb.IDMapperRdb.mapID(java.util.Collection,org.bridgedb.DataSource[]) throws org.bridgedb.IDMapperException"     

如何使用仅包含外部参照的RJava调用此Java方法(mapper $ mapID)?

1 个答案:

答案 0 :(得分:1)

正如https://www.rforge.net/doc/packages/rJava/jarray.html所指出,您应该在调用.jarray时提供一个列表,可能只有一个NULL元素