JAVA中類型後面跟三個點的使用問題

首先來講一下java  三個點的知識吧,

可變數組參數。用...的話,傳參數時可傳可不傳,傳的話,可以是一個個並列地傳,也可以直接是一個數組。
在方法裏取時,s是一個數組,如果調用時什麼都沒有傳,那麼s的長度就是0。傳的時候傳了幾個,s的長度就是幾。
還有,1.5以上才支持這個功能。 
寫的例子:

public class ThreePoint {  
    public static void main(String[] args) {  
        printString();  
        System.out.println("==========");  
        printString(new String[] { "我", "和", "你" });  
        System.out.println("==========");  
        printString("我", "和", "你");  
    }  
  
    public static void printString(String... str) {  
        if (str.length == 0) {  
            System.out.println("沒有傳參數。");  
        }  
        for (int i = 0; i < str.length; i++) {  
            System.out.println(str[i]);  
        }  
        System.out.println("---------------------");  
        for (String s : str) {  
            System.out.println(s);  
        }  
    }  
  
}  



今天,MTBF遇到了一個關於數組越界的問題

04-25 23:01:31.417925 23613 23671 E AndroidRuntime: Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=8
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at java.util.concurrent.CopyOnWriteArrayList.remove(CopyOnWriteArrayList.java:344)
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at com.android.mms.model.SlideshowModel.remove(SlideshowModel.java:774)
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at com.android.mms.ui.SlideshowEditor.removeSlide(SlideshowEditor.java:134)
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at com.android.mms.data.WorkingMessage.setAttachment(WorkingMessage.java:1021)
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at com.android.mms.ui.ComposeMessageActivity.addImage(ComposeMessageActivity.java:6918)
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at com.android.mms.ui.ComposeMessageActivity.-wrap31(ComposeMessageActivity.java)
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at com.android.mms.ui.ComposeMessageActivity$65.run(ComposeMessageActivity.java:6881)
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at com.android.mms.ui.AsyncDialog$ModalDialogAsyncTask.doInBackground(AsyncDialog.java:161)
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at com.android.mms.ui.AsyncDialog$ModalDialogAsyncTask.doInBackground(AsyncDialog.java:157)
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at android.os.AsyncTask$2.call(AsyncTask.java:295)
04-25 23:01:31.417925 23613 23671 E AndroidRuntime: 	at java.util.concurrent.FutureTask.run(FutureTask.java:237)

這個問題的涉及到java代碼如中:

@Override
        protected Void doInBackground(Runnable... params) {
            if (params != null) {
                try {
                    for (int i = 0; i < params.length; i++) {
                        params[i].run();
                    }
                } finally {
                    mHandler.removeCallbacks(mShowProgressDialogRunnable);
                }
            }
            return null;
        }
應該實在異步線程裏出現了數組越界的問題:




      






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章