1

我注意到隐式构造函数和 GroovyTruth 之间存在一些冲突。

考虑以下代码

assert new File('/') == ['/'] as File
assert Boolean.TRUE == ["false"] as Boolean

第一行是 File(String) 构造函数的隐式调用。第二行只返回true,因为 list 不为空。但它可以(应该?)调用具有不同结果值( false )的 Boolean(String) 构造函数。

它是错误,记录的功能还是smth。别的?我应该将其报告为错误吗?

4

1 回答 1

1

当你这样做时:

['false'] as Boolean

它最终通过了DefaultTypeTransformation.castToType,它调用castToBoolean你可以看到的检查null,然后调用只检查它不为空asBooleanCollection类型

在这个File例子中,它一直到底部castToType,只是尝试用列表的内容调用构造函数

我不会说这是一个错误,但它绝对是 Groovy 的一个特性,必须考虑到(现在更改它将是兼容性的巨大突破)

于 2013-11-12T17:12:04.410 回答