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

Groovy自定义类如何无需调用getValue()直接获取实例value值

Groovy自定义类实现默认打印与隐式类型转换方案

你需要的两个效果分别通过重写Groovy类的两个内置方法即可实现,不需要额外引入依赖或者特殊配置:

  • 直接打印实例输出value值:重写toString()方法即可,Groovy中所有打印、字符串拼接场景都会自动调用对象的toString()方法获取输出内容。
  • 直接将实例赋值给Integer类型变量:重写asType(Class targetType)方法即可,这是Groovy开放的自定义类型转换入口,类型匹配时会自动触发转换逻辑,不需要显式调用取值方法。

完整实现代码

class MyInteger {
    Integer value

    MyInteger(Integer iv) {
        this.value = iv
    }

    Integer getValue() {
        return value
    }

    // 控制打印输出内容
    @Override
    String toString() {
        return value.toString()
    }

    // 自定义隐式类型转换逻辑
    @Override
    Object asType(Class targetType) {
        if (targetType == Integer) {
            return value
        }
        // 非目标转换类型走父类默认逻辑
        return super.asType(targetType)
    }
}

效果验证

运行以下测试代码即可完全匹配你的预期:

MyInteger i = new MyInteger(5)
print i.value // 原有逻辑正常,输出5
print i.getValue() // 原有逻辑正常,输出5
print i // 直接输出5,符合打印预期
Integer realInt = i // 直接赋值成功,不需要显式调用取值方法

注:该实现逻辑和Groovy标准库中Integer等原生数值类型的隐式处理逻辑完全一致,不会破坏原有类的其他使用逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:03:23