大佬教程收集整理的这篇文章主要介绍了groovy – 重载方法的意外行为,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
而且更重要的是:为什么@R_874_8922@ean(null)
调用String foo(A arg)?我猜对象不知道它所绑定的变量的类型,但是为什么这个调用并不含糊,而其他变量呢?
(我希望我解释得很好,我的头痛从产生这个最小的痛苦
例.)
class Foo { static class A {} static class B {} String foo(A arg) { return 'a' } String foo(String s,A a) { return 'a' } String foo(B arg) { return 'b' } String foo(String s,B b) { return 'b' } }
测试:
import org.junit.Test import Foo.A import Foo.b class FooTest { Foo foo = new Foo() @Test void testA() { A a = new A() assert foo.foo(a) == 'a' } @Test void testAString() { A a = new A() assert foo.foo('foo',a) == 'a' } @test() void testANull() { A a = null assert foo.foo(a) == 'a' } @Test void testAStringNull() { A a = null assert foo.foo('foo',a) == 'a' } @Test void @R_874_8922@() { B b = new B() assert foo.foo(b) == 'b' } @Test void @R_874_8922@String() { B b = new B() assert foo.foo('foo',b) == 'b' } @Test void @R_874_8922@Null() { B b = null assert foo.foo(b) == 'b' } @Test void @R_874_8922@StringNull() { B b = null assert foo.foo('foo',b) == 'b' } }
最终,为了安全地处理可能的null参数以重载方法,调用者必须转换参数,如in
A a = null assert foo.foo('foo',a as A) == 'a'
这个关于“Groovy Isn’t A Superset of Java”的讨论可能会对这个问题有所了解.
以上是大佬教程为你收集整理的groovy – 重载方法的意外行为全部内容,希望文章能够帮你解决groovy – 重载方法的意外行为所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。