我经历了一件有趣的事情在这里来了。这不是问题,我只是对优先顺序感到好奇。让我们去的代码:排序方法调用顺序
我有在同一类这两种方法:
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
没什么......这只是为了好奇。正如我在这个问题上所说的。 –