You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用with代码块创建Groovy实例引发类型转换异常问题

Groovy类型转换错误原因及单语句创建对象并赋值的解决方法

错误原因

Groovy的with方法会返回闭包最后一行代码的执行结果。你的代码中,闭包最后一行是propB = new B(value: "Abc", isSomething: true),这行的返回值是新创建的B类实例,而非A类实例。强行将B实例转换为A类型,必然触发GroovyCastException类型转换异常。

单语句创建A实例并设置propB的正确写法

方法1:在with闭包中显式返回A实例

def x = new A().with {
    propB = new B(value: "Abc", isSomething: true)
    this // 显式返回当前A实例
}

无需额外类型转换,因为闭包最终返回的就是A实例。

方法2:使用tap方法(更简洁)

Groovy的tap方法会始终返回调用它的对象本身(也就是A的实例),无需手动返回:

def x = new A().tap {
    propB = new B(value: "Abc", isSomething: true)
}

内容的提问来源于stack exchange,提问作者Aymen Turki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:10:24