相关疑难解决方法(0)

重载方法的意外行为

我有点困惑groovys方法重载行为:由于阶级和下面的测试中,我与漂亮没关系testAStringNull,并testBStringNull 抛出暧昧的方法调用例外,但为什么就是不适合的情况 testANulltestBNull呢?

而且,更重要的是:为什么testBNull(null) 打电话String foo(A arg)?我猜这个对象不知道它所绑定的变量的类型,但为什么这个调用对于groovy而言并不模糊,而其他的呢?

(我希望我解释得很好,我的脑袋因产生这个极小的例子而受伤.)

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' }
}
Run Code Online (Sandbox Code Playgroud)

测试:

import org.junit.Test
import Foo.A
import Foo.B

class FooTest {
    Foo foo = new Foo()

    @Test
    void testA() { …
Run Code Online (Sandbox Code Playgroud)

groovy

9
推荐指数
1
解决办法
2906
查看次数

标签 统计

groovy ×1