国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

JDK5 新特性之 可變參數(shù)的方法(2)---asList

2019-11-14 22:58:10
字體:
供稿:網(wǎng)友
JDK5 新特性之 可變參數(shù)的方法(2)---asList

》 Arrays.asList(T … a)方法的使用

》UnsupportedOperationException分析

 

 

  • Arrays.asList(T … a)方法的使用
package cn.itcast.day24.varparam;import java.util.Arrays;import java.util.List;/** *  * public static <T> List<T> asList(T... a):把數(shù)組轉(zhuǎn)為集合 *  * 注意: *         轉(zhuǎn)成的集合本質(zhì)還是數(shù)組,長度是固定的,所以轉(zhuǎn)換完成得到的集合,不能增刪(會改變數(shù)組長度),只能修改。 * */public class AsListDemo {    public static void main(String[] args) {        //定義一個數(shù)組//        String[] arrStr={"林青霞","武松","豬八戒"};//        List<String> list=Arrays.asList(arrStr);                List<String> list=Arrays.asList("java","world","hello");        //UnsupportedOperationException        list.add("javaee");//錯誤//        list.remove(1);//錯誤        list.set(1, "javaee");//修改成功        //        for(String s:list){//            System.out.PRintln(s);//        }    }}
  • UnsupportedOperationException分析

可以看到Arrays的私有內(nèi)部類Arrays$ArrayList中,沒有實現(xiàn)來自父類AbstractList的add(),remove()等長度相關(guān)的方法,

所以拋出 UnsupportedOperationException,意思是:不支持請求的操作(當(dāng)然不支持)

private static class ArrayList<E> extends AbstractList<E>    implements Randomaccess, java.io.Serializable    {        private static final long serialVersionUID = -2764017481108945198L;    private final E[] a;    ArrayList(E[] array) {            if (array==null)                throw new NullPointerException();        a = array;    }    public int size() {        return a.length;    }    public Object[] toArray() {        return a.clone();    }    public <T> T[] toArray(T[] a) {        int size = size();        if (a.length < size)        return Arrays.copyOf(this.a, size,                     (Class<? extends T[]>) a.getClass());        System.arraycopy(this.a, 0, a, 0, size);        if (a.length > size)        a[size] = null;        return a;    }    public E get(int index) {        return a[index];    }//重寫了父類AbstractList的set方法,所以set時沒有拋出異常.而add和remove方法來自基類,所以都拋出了異常。
    public E set(int index, E element) {        E oldValue = a[index];        a[index] = element;        return oldValue;    }        public int indexOf(Object o) {            if (o==null) {                for (int i=0; i<a.length; i++)                    if (a[i]==null)                        return i;            } else {                for (int i=0; i<a.length; i++)                    if (o.equals(a[i]))                        return i;            }            return -1;        }        public boolean contains(Object o) {            return indexOf(o) != -1;        }    }

 

AbstractList源碼:
package java.util;public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {    public E set(int index, E element) {    throw new UnsupportedOperationException();    }    public boolean add(E e) {    add(size(), e);    return true;    }    public void add(int index, E element) {    throw new UnsupportedOperationException();    }    public E remove(int index) {    throw new UnsupportedOperationException();    }    public void clear() {        removeRange(0, size());    }    public E set(int index, E element) {    throw new UnsupportedOperationException();    }    abstract public E get(int index);}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 六枝特区| 湘西| 开封市| 正安县| 电白县| 扎鲁特旗| 湖口县| 林口县| 马边| 房产| 华阴市| 镇江市| 通城县| 苏尼特右旗| 海淀区| 金门县| 许昌县| 合作市| 高雄市| 龙海市| 平谷区| 惠水县| 正宁县| 河东区| 商丘市| 浑源县| 宜昌市| 浦北县| 阳高县| 资中县| 宁武县| 义马市| 通许县| 静安区| 蒲城县| 府谷县| 华蓥市| 大连市| 尼勒克县| 垫江县| 灵寿县|