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
相关产品推荐
相关产品推荐

