我有点困惑groovys方法重载行为:由于阶级和下面的测试中,我与漂亮没关系testAStringNull,并testBStringNull
抛出暧昧的方法调用例外,但为什么就是不适合的情况
testANull和testBNull呢?
而且,更重要的是:为什么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 ×1