Java中的可变长参数可以这样表示:
String...args
而其与String s(即单参数)方法的多态性成了一个很有意思的问题。
package cn.xujin;
public class Regex2
{
public static void main(String args[])
{
Base a = new Child();
a.test("one");//Base
//a.test("22","123");//error,编译错误
Child b = (Child)a;
b.test("one");//Base
b.test("one","two");//Child
}
}
class Base{
public void test(String s){
System.out.println("Base");
}
}
class Child extends Base{
public void test(String...args){
System.out.println("Child");
}
}
运行上述程序可以知道:
a是一个Child类型,可是被Base引用,调用a.test("one")调用的是Base类中的;而a.test("one","two");不能编译,是因为Base类中无两个参数的test方法
b也是一个Child类型,被Child类型引用,b.test("one")调用的是Base类中的,而b.test("one","two");调用的是Child类中的变长参数方法。