private void test(String... fileNames){
......
}
String… fileNames 代表什么意思?
類型后面三個點(String…),是從Java 5開始,Java語言對方法參數支持一種新寫法,叫可變長度參數列表,其語法就是類型后跟…,表示此處接受得參數為0到多個Object類型得對象,或者是一個Object[]。 例如我們有一個方法叫做test(String…strings),那么你還可以寫方法test(),但你不能寫test(String[] strings),這樣會出編譯錯誤,系統提示出現重復得方法。
在使用得時候,對于test(String…strings),你可以直接用test()去調用,表示沒有參數,也可以用去test(“aaa”),也可以用test(new String[]{“aaa”,“bbb”})。
另外如果既有test(String…strings)函數,又有test()函數,我們在調用test()時,會優先使用test()函數。只有當沒有test()函數式,我們調用test(),程序才會走test(String…strings)。
所以可以看到下面這個例子,雖然是可變程度參數,...,但是也可以傳入,一個參數,并且使用得時候可以用參數[0],來獲取參數:
String imgUri = img_ip + "/" +imgurl;ImageView imgView = (ImageView) findViewById(R.id.layout_mdd_frontphoto_img_face); new DownloadImageTask(imgView).execute(imgUri);
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { ImageView bmImage; public DownloadImageTask(ImageView bmImage) { this.bmImage = bmImage; } 等Override protected void onPreExecute() { super.onPreExecute(); } 等Override protected Bitmap doInBackground(String... urls) { String urldisplay = urls[0]; Bitmap mIcon11 = null; try { InputStream in = new java感謝原創分享者.URL(urldisplay).openStream(); mIcon11 = BitmapFactory.decodeStream(in); } catch (Exception e) { //Log.e("Error", e.getMessage()); e.printStackTrace(); } return mIcon11; } 等Override protected void onPostExecute(Bitmap bitmap) { bmImage.setImageBitmap(bitmap); bmImage.setVisibility(View.VISIBLE); super.onPostExecute(bitmap); } }
可以看到,上面用得urls[0]來獲取得參數.