2016-04-03 42 views
-1

比方说,我有以下两个功能:单ARG超载和可变参数

public foo(String str){ 
    System.out.println(str); 
} 

public foo(String... str){ 
    System.out.println("varargs"); 
    for(String s: str){ 
     System.out.println(s); 
    } 
} 

将其编译? 如果它会用foo(“hi”)调用哪个foo?

+0

有一个简单的方法来找出。 –

+4

如果只是有某种方式检查 – Reimeus

+4

我投票结束这个问题作为题外话,因为按'运行'按钮应该是你的第一个行动方针。 –

回答

2

它会编译?

不是。因为你的两个方法都没有返回类型。

如果你将它设置为void

public void foo(String str){ 
    System.out.println(str); 
} 

public void foo(String... str){ 
    System.out.println("varargs"); 
    for(String s: str){ 
     System.out.println(s); 
    } 
} 

那么它将编译。

如果将用foo("hi")调用哪个foo?

将调用foo(String str)方法,您可以轻松地检查它。