Groovy中String类plus运算符重载为何失效?
关于Groovy中String类运算符重载的问题
我成功为自定义类实现了运算符重载,但始终无法为String类实现。尝试以下两种写法均失败:
static void main(String[] args) { String.metaClass.plus = { r -> return "-"; } print "left" + "right" } //另一种尝试: static void main(String[] args) { String.metaClass.plus = { r -> return "-".toString(); } print "left".toString() + "right".toString() }
解决进展
我给匿名函数的参数添加String类型声明后,成功实现了重载:
//旧版 - 失效 String.metaClass.plus = { r -> "-"; } //新版 - 生效 String.metaClass.plus = { String r -> "-"; }
疑问
为何旧版本失效而新版本可行?我观看的教程及ChatGPT均表示旧写法应生效。
内容的提问来源于stack exchange,提问作者Santa Monica
相关产品推荐
相关产品推荐

