如何使用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}"