Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用rJava访问枚举?_Java_R_Rjava - Fatal编程技术网

如何使用rJava访问枚举?

如何使用rJava访问枚举?,java,r,rjava,Java,R,Rjava,我正在使用一个名为的第三方库。我正在尝试使用rJava创建类Bond的实例: o1 <- .jnew("org.openscience.cdk.Atom","O") o2 <- .jnew("org.openscience.cdk.Atom","O") J("org.openscience.cdk.Bond",o1,o2, "org.openscience.cdk.interfaces.IBond.Order.SINGLE") 希望SINGLE可以像任何其他静态字段/方法一样访

我正在使用一个名为的第三方库。我正在尝试使用
rJava
创建类
Bond
的实例:

o1 <- .jnew("org.openscience.cdk.Atom","O")
o2 <- .jnew("org.openscience.cdk.Atom","O")
J("org.openscience.cdk.Bond",o1,o2,
  "org.openscience.cdk.interfaces.IBond.Order.SINGLE")
希望
SINGLE
可以像任何其他静态字段/方法一样访问,但它不起作用


有没有办法使用rJava将枚举传递给方法?

我找到了这样做的方法,我使用美元符号引用在
IBond
接口中声明的公共枚举
顺序,然后使用另一个美元符号访问枚举值:

J("org.openscience.cdk.interfaces.IBond")$Order$SINGLE

它是一个嵌套类,因此正确名称为
org.openscience.cdk.interfaces.IBond$Order

> .jfields("org.openscience.cdk.interfaces.IBond$Order")
[1] "public static final org.openscience.cdk.interfaces.IBond$Order org.openscience.cdk.interfaces.IBond$Order.SINGLE"   
[2] "public static final org.openscience.cdk.interfaces.IBond$Order org.openscience.cdk.interfaces.IBond$Order.DOUBLE"   
[3] "public static final org.openscience.cdk.interfaces.IBond$Order org.openscience.cdk.interfaces.IBond$Order.TRIPLE"   
[4] "public static final org.openscience.cdk.interfaces.IBond$Order org.openscience.cdk.interfaces.IBond$Order.QUADRUPLE"
[5] "public static final org.openscience.cdk.interfaces.IBond$Order org.openscience.cdk.interfaces.IBond$Order.QUINTUPLE"
[6] "public static final org.openscience.cdk.interfaces.IBond$Order org.openscience.cdk.interfaces.IBond$Order.SEXTUPLE" 
[7] "public static final org.openscience.cdk.interfaces.IBond$Order org.openscience.cdk.interfaces.IBond$Order.UNSET"    
所以“正常”的方式应该是

> .jfield("org.openscience.cdk.interfaces.IBond$Order",,"SINGLE")
[1] "Java-Object{SINGLE}"
> J("org.openscience.cdk.interfaces.IBond$Order")$SINGLE
[1] "Java-Object{SINGLE}"

你有没有设法让CDK债券创建工作?我在尝试从R中创建CDK分子时遇到了错误。
> .jfield("org.openscience.cdk.interfaces.IBond$Order",,"SINGLE")
[1] "Java-Object{SINGLE}"
> J("org.openscience.cdk.interfaces.IBond$Order")$SINGLE
[1] "Java-Object{SINGLE}"