文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2. 多重方法
在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论