java中Varargs用法

will的猜想發表於2017-11-03

1.前言

最近開發時要使用AsyncTask類,其中要重寫這麼一個方法:

protected String doInBackground(String... params) {
}
  • 1
  • 2

這裡的params便是可變引數(有的地方稱為變長引數)。

2.詳解

String[]和String…的本質相同(都是字串陣列)。 
以下為使用String…的例子:

public void myMethod( String... foo ) {
    System.out.println( foo[0] );
}

myMethod( "a", "b", "c" );

// 或者
myMethod( new String[]{ "a", "b", "c" } );

// 或者不傳遞引數
myMethod( );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

以下為使用String[]的例子:

public void myMethod( String[] foo ) {
    System.out.println( foo[0] );
}

// 這裡會編譯錯誤!!!
myMethod( "a", "b", "c" );

// 只能通過這種方式
myMethod( new String[]{ "a", "b", "c" } );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

因此,Java中的main函式也可以寫成這樣。

    public static void main(String... args) {

    }
  • 1
  • 2
  • 3

注意:一個方法中只能有一個可變引數;如果一個方法中有可變引數,那麼它只能是在最後一個出現!


相關文章