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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:03:19