gpt4 book ai didi

java - 如何防止在对象数组中获取 Groovy boolean 值?

转载 作者:行者123 更新时间:2023-12-04 05:57:19 25 4
gpt4 key购买 nike

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

Object[] newValues = {
Boolean.TRUE
}
descriptor.setParameters(newValues)

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

并不是说它的信息量很大,这是堆栈跟踪:
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 .

关于java - 如何防止在对象数组中获取 Groovy boolean 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9363550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com