形成继承概念,如果某个特定的方法在当前类中不可用,它将在超类中搜索该方法。如果可用,则执行。
它执行AbstractList<E>类add()方法,该方法会抛出UnsupportedOperationException。
当您将数组转换为集合对象时。例如,基于数组的API到基于集合的API,那么它将为你提供固定大小的集合对象,因为数组的行为是固定大小的。
java.util.Arrays。asList (T…一)
构象样品来源。
public class Arrays {
public static <T> List<T> asList(T... a) {
return new java.util.Arrays.ArrayList.ArrayList<>(a); // Arrays Inner Class ArrayList
}
//...
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable {
//...
}
}
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
public E set(int index, E element) {
throw new UnsupportedOperationException();
}
public E remove(int index) {
throw new UnsupportedOperationException();
}
public Iterator<E> iterator() {
return new Itr();
}
private class Itr implements Iterator<E> {
//...
}
public ListIterator<E> listIterator() {
return listIterator(0);
}
private class ListItr extends Itr implements ListIterator<E> {
//...
}
}
在上面的源代码中,你可能会发现java.util.Arrays.ArrayList类并没有@Override add(index, element), set(index, element), remove(index)。因此,它从继承中执行super AbstractList<E>类add()函数,该函数抛出UnsupportedOperationException。
由于AbstractList<E>是一个抽象类,它提供了iterator()和listIterator()的实现。这样我们就可以遍历list对象。
List<String> list_of_Arrays = Arrays.asList(new String[] { "a", "b" ,"c"});
try {
list_of_Arrays.add("Yashwanth.M");
} catch(java.lang.UnsupportedOperationException e) {
System.out.println("List Interface executes AbstractList add() fucntion which throws UnsupportedOperationException.");
}
System.out.println("Arrays → List : " + list_of_Arrays);
Iterator<String> iterator = list_of_Arrays.iterator();
while (iterator.hasNext()) System.out.println("Iteration : " + iterator.next() );
ListIterator<String> listIterator = list_of_Arrays.listIterator();
while (listIterator.hasNext()) System.out.println("Forward iteration : " + listIterator.next() );
while(listIterator.hasPrevious()) System.out.println("Backward iteration : " + listIterator.previous());
你甚至可以创建固定大小的数组集合类Collections. unmodifiablelist (list);
样品来源:
public class Collections {
public static <T> List<T> unmodifiableList(List<? extends T> list) {
return (list instanceof RandomAccess ?
new UnmodifiableRandomAccessList<>(list) :
new UnmodifiableList<>(list));
}
}
一个集合——有时称为容器——只是一个对象,它将多个元素组合成一个单元。集合用于存储、检索、操作和通信聚合数据。
@see也
HashMap vs HashTable
对象序列化使用Serializable和Externalizable接口