返回介绍

2. 多重方法

发布于 2025-01-04 00:44:50 字数 632 浏览 0 评论 0 收藏 0

在 Groovy 中,调用的方法将在运行时被选择。这种机制被称为运行时分派或多重方法(multi-methods),是根据运行时实参(argument)的类型来选择方法。Java 采用的是相反的策略:编译时根据声明的类型来选择方法。

下面的 Java 代码可以用 Java 和 Groovy 来编译,但两种编译结果截然不同:

int method(String arg) {
  return 1;
}
int method(Object arg) {
  return 2;
}
Object o = "Object";
int result = method(o);

用 Java 编译的结果如下:

assertEquals(2, result);

用 Groovy 编译的结果则为:

assertEquals(1, result);

产生差异的原因在于,Java 使用静态数据类型, o 被声明为 Object 对象,而 Groovy 会在运行时实际调用方法时进行选择。因为调用的是 String 类型的对象,所以自然调用 String 版本的方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文