国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 吉木乃县| 奉节县| 舞钢市| 阜平县| 昭苏县| 沙田区| 辉南县| 安溪县| 贵定县| 新泰市| 洛扎县| 岗巴县| 秭归县| 潜山县| 沈阳市| 循化| 额敏县| 临潭县| 旬阳县| 封开县| 九江县| 高雄市| 民权县| 桦甸市| 漾濞| 方城县| 霍城县| 固安县| 东宁县| 宁陵县| 桑植县| 电白县| 青州市| 新宁县| 远安县| 大兴区| 贞丰县| 乌拉特中旗| 荣昌县| 伊金霍洛旗| 塔城市|