Java 如何防止在对象数组中获取Groovy布尔值?

Java 如何防止在对象数组中获取Groovy布尔值?,java,groovy,boolean,Java,Groovy,Boolean,我正在尝试创建一个要传递给方法()的对象数组(Object[]): 特定描述符期望数组中的第一个值是java.lang.Boolean对象。然而,Groovy似乎正在转换为它自己的布尔类,当我运行代码(上面不是完整的代码)时,描述符报告数组中的第一个对象不是java.lang.boolean对象 并不是说它的信息量很大,这是stacktrace: org.openscience.cdk.exception.CDKException: The first parameter must be of

我正在尝试创建一个要传递给方法()的对象数组(Object[]):

特定描述符期望数组中的第一个值是java.lang.Boolean对象。然而,Groovy似乎正在转换为它自己的布尔类,当我运行代码(上面不是完整的代码)时,描述符报告数组中的第一个对象不是java.lang.boolean对象

并不是说它的信息量很大,这是stacktrace:

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类,而不是它自己的更丰富的类?

使用正确的大括号:

Object[] newValues = [ true ]

您使用了创建闭包的
{}
。这也很有效,因为闭包有很多特殊功能,但它们不是列表,而是数组。因此Groovy将右侧的单个元素包装在一个列表中,然后分配数组
newValues

Cool,thanx!是的,断言错误消息应该给我这个提示!我之所以知道,是因为我曾经掉进过同样的陷阱。在我的例子中,我使用的是
MapX={…}
和闭包的工作方式非常类似于maps,所以大多数代码实际上都能工作,但在一些奇怪的情况下,它失败了。
Object[] newValues = [ true ]