我正在尝试创建一个要传递给方法(IDescriptor)的Object数组(Object []):
Object[] newValues = {
Boolean.TRUE
}
descriptor.setParameters(newValues)
特定描述符期望数组中的第一个值是 java.lang.Boolean 对象。但是,似乎Groovy正在转换为它自己的布尔类,当我运行代码时(上面不是完整代码),描述符报告数组中的第一个Object不是java.lang.Boolean对象。 / p>
这不是非常有用的,这是堆栈跟踪:
org.openscience.cdk.exception.CDKException: The first parameter must be of type Boolean
at org.openscience.cdk.qsar.descriptors.molecular.AromaticAtomsCountDescriptor.setParameters(AromaticAtomsCountDescriptor.java:118)
当我添加一个断言(在错误中重复)时,我收到此错误:
assert newValues[0] instanceof java.lang.Boolean
| | |
| | false
| AromaticAtomCountDescriptorParams$_run_closure3@1cc5069
[AromaticAtomCountDescriptorParams$_run_closure3@1cc5069]
如何确保Groovy在数组中使用Java Boolean类,而不是使用更丰富的类?
答案 0 :(得分:3)
使用正确的大括号:
Object[] newValues = [ true ]
您使用{}
创建闭包。这也有效,因为闭包具有很多特殊功能,但它们不是列表是数组。因此,Groovy将单个元素包装在列表的右侧,然后分配数组newValues
。