2016-04-03 14 views
-1

はのは、私は、次の2つの機能を持っているとしましょう可変引数:は、単一の引数でオーバーロードと

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)メソッドが呼び出され、簡単に確認できます。

関連する問題