永发信息网

为什么Java里的Arrays.asList不能用add和remove方法

答案:1  悬赏:30  手机版
解决时间 2021-11-13 21:48
  • 提问者网友:回忆在搜索
  • 2021-11-13 03:35
为什么Java里的Arrays.asList不能用add和remove方法
最佳答案
  • 五星知识达人网友:鸠书
  • 2021-11-13 04:15
因为该方法返回出来的是Arrays类的一个内部类
该内部类继承抽象类AbstractList实现List
而该类并未对add和remove方法进一步实现
所以只是一个固态列表,,不可改变内容
Arrays部分源码如下:
 public static List asList(T...a)
 {
  return new ArrayList(a);
 }
 private static class ArrayList extends AbstractList 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[] toArray(T[] a)
  {
   int size=size();
   if(a.length)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];
  }
  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     if(a[i]==null) return i;
   }
   else
   {
    for(int i=0;i     if(o.equals(a[i])) return i;
   }
   return -1;
  }
  public boolean contains(Object o)
  {
   return indexOf(o)!=-1;
  }
 }不要被这个名字给误导,,,容易和java.util.ArrayList搞混
 
总结
Arrays.asList()返回的列表只能用作遍历
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯