我經歷了一件有趣的事情在這裏來了。這不是問題,我只是對優先順序感到好奇。讓我們去的代碼:排序方法調用順序
我有在同一類這兩種方法:
1- public void method1(String a, String...b){
2- System.out.println(a + "===" + b[0]);
3- }
4-
5- public void method1(String a, String b){
6- method1(a, b);
7- }
8-
9- public static void main(String[] args) {
10- Teste t = new Teste();
11- t.method1("a", "b");
12- }
這裏運行測試中,我看到,第11行的調用method1
將調用method1
第5行定義那麼它會做一個自己的電話,因此一個java.lang.StackOverflowError
。我的問題是關於優先順序呼籲theese方法,如method1
1號線接收線5的String, String[]
和method1
接收理論上的String, String
他們收到相同的參數,如果我想傳遞的第二個參數兩種方法只是一個字符串。
我知道,在這種情況下調用特定的方法第1行只有一個字符串作爲第二個參數我會做method1("someString", new String[]{"someString"});
我想知道是否有任何的解釋(或文檔)到這個優先順序的呼叫。這說的是這樣的:
「在一個方法定義中,如果只傳遞一個參數,其中一個方法接收一個對象,而另一個是同一個對象的數組,那麼執行它的方法將是一個接收僅僅一個對象,而不是接收陣列爲該對象」
什麼額外的好處確實你的'第二個版本method1'提供? – Ingo
沒什麼......這只是爲了好奇。正如我在這個問題上所說的。 –