如何在 RJava 中使用零值调用带有可变参数的方法?
How to call methods with varargs in RJava with zero values?
我正在开发一个使用 RJava 进行标识符映射(在生物学中)的软件包:BridgeDbR。其中一种方法调用 Java 方法,该方法具有变量 mapID():
xref <- .jnew("org/bridgedb/Xref", identifier, datasource)
datatarget <- getDataSource(code=target)
targets = .jarray(c(datatarget), contents.class="org/bridgedb/DataSource")
这里的 getDataSource() 方法 return 是一个 Java 类型的对象 org.bridgedb.DataSource.
然后进行感兴趣的实际调用,其中(如上所示)外部参照和目标是 Java 对象,映射器也是 Java 对象,见下文:
mappings = mapper$mapID(xref, targets)
此映射器对象是 IDMapper 接口的一个实例,并使用变量定义了 mapID() 方法:
public Set<Xref> mapID (Xref ref, DataSource... tgtDataSources)
throws IDMapperException;
现在,我想在没有数据源的情况下调用这个方法。在 Java 我会这样做:
someMapper.mapID(someXref)
...和Java找到这个方法。
但是,我不知道如何在 RJava 中执行此操作。以下变体都不起作用(例如 .jarray(c(), contents.class="org/bridgedb/DataSource") return 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)?
正如 https://www.rforge.net/doc/packages/rJava/jarray.html 中所指出的,您应该在对 .jarray
的调用中提供一个列表,可能带有单个 NULL
元素
我正在开发一个使用 RJava 进行标识符映射(在生物学中)的软件包:BridgeDbR。其中一种方法调用 Java 方法,该方法具有变量 mapID():
xref <- .jnew("org/bridgedb/Xref", identifier, datasource)
datatarget <- getDataSource(code=target)
targets = .jarray(c(datatarget), contents.class="org/bridgedb/DataSource")
这里的 getDataSource() 方法 return 是一个 Java 类型的对象 org.bridgedb.DataSource.
然后进行感兴趣的实际调用,其中(如上所示)外部参照和目标是 Java 对象,映射器也是 Java 对象,见下文:
mappings = mapper$mapID(xref, targets)
此映射器对象是 IDMapper 接口的一个实例,并使用变量定义了 mapID() 方法:
public Set<Xref> mapID (Xref ref, DataSource... tgtDataSources)
throws IDMapperException;
现在,我想在没有数据源的情况下调用这个方法。在 Java 我会这样做:
someMapper.mapID(someXref)
...和Java找到这个方法。
但是,我不知道如何在 RJava 中执行此操作。以下变体都不起作用(例如 .jarray(c(), contents.class="org/bridgedb/DataSource") return 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)?
正如 https://www.rforge.net/doc/packages/rJava/jarray.html 中所指出的,您应该在对 .jarray
的调用中提供一个列表,可能带有单个 NULL
元素