Bentuk konsep Warisan, Jika beberapa metode pertikular tidak tersedia di kelas saat ini akan mencari metode itu di kelas super. Jika tersedia dijalankan.
Ini mengeksekusi metode AbstractList<E>
kelas add()
yang melempar UnsupportedOperationException
.
Saat Anda mengonversi dari Array ke Obejct Collection. yaitu, berbasis array ke API berbasis koleksi maka ia akan memberi Anda objek koleksi ukuran tetap, karena perilaku Array adalah ukuran tetap.
java.util.Arrays.asList (T ... a)
Sampel souce untuk konformasi.
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> {
//...
}
}
Bentuk Sumber di atas Anda dapat mengamati bahwa java.util.Arrays.ArrayList
kelas tidak @Override add(index, element), set(index, element), remove(index)
. Jadi, Dari pewarisan itu menjalankan fungsi AbstractList<E>
kelas super add()
yang melempar UnsupportedOperationException
.
Seperti AbstractList<E>
kelas abstrak yang menyediakan implementasinya untuk iterator() and listIterator()
. Jadi, kita bisa beralih ke objek daftar.
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());
Anda bahkan dapat membuat kelas Koleksi ukuran-bentuk array tetap Collections.unmodifiableList(list);
Sumber sampel:
public class Collections {
public static <T> List<T> unmodifiableList(List<? extends T> list) {
return (list instanceof RandomAccess ?
new UnmodifiableRandomAccessList<>(list) :
new UnmodifiableList<>(list));
}
}
A Collection
- kadang-kadang disebut wadah - hanyalah sebuah objek yang mengelompokkan beberapa elemen menjadi satu unit. Koleksi digunakan untuk menyimpan, mengambil, memanipulasi, dan mengkomunikasikan data agregat.
@Lihat juga