変更不可ビューオブジェクトのサポート

2441 ワード

AbstractCollection:
public abstract class AbstractCollection<E>
 
extends
Object
implements
Collection
これにより、Collectionインタフェースの中堅実装が提供され、このインタフェースの実装に必要な作業が最小限に抑えられます.
変更不可能なcollectionを実装するには、プログラマはこれを拡張し、iteratorメソッドとsizeメソッドの実装を提供するだけです.(iteratorメソッドが返す反復器はhasNextとnextを実装する必要があります.)変更可能なcollectionを実装するには、プログラマは、このようなaddメソッドを別途書き換える必要があります(そうでなければ、UnsupportedOperationExceptionが放出されます)、iteratorメソッドが返す反復器は、removeメソッドを別途実装する必要があります.Collectionインタフェース仕様の推奨に従って、プログラマは通常void(パラメータなし)とCollection構築方法を提供する必要があります.このクラスの各非抽象メソッドのドキュメントは、その実装を詳細に説明しています.実装するcollectionがより効率的な実装を可能にする場合、これらのメソッドの各メソッドを書き換えることができます.
    public boolean add(E e) {
throw new UnsupportedOperationException();
    }
 
   public boolean remove(Object o) {
Iterator e = iterator();
if (o==null) {
   while (e.hasNext()) {
if (e.next()==null) {
   e.remove();
   return true;
}
   }
} else {
   while (e.hasNext()) {
if (o.equals(e.next())) {
   e.remove();
   return true;
}
   }
}
return false;
    }
 
 
AbstractList
public abstract class AbstractListextends AbstractCollection implements List
このようなListインタフェースを提供するバックボーンインプリメンテーションは、配列などの「ランダムアクセス」データストレージによってサポートされるインタフェースを実現するために必要な作業を最小限に抑える.チェーンテーブルなどの連続アクセスデータの場合は、AbstractSequentialListを優先的に使用します.変更できないリストを実装するには、プログラマはこのようなリストを拡張し、get(int index)メソッドとsize()メソッドの実装を提供するだけです.変更可能なリストを実装するには、プログラマはset(int index,Object element)メソッドを別途書き換える必要があります.そうしないと、UnsupportedOperationExceptionが放出されます.リストが可変サイズの場合、プログラマはadd(int index,Object element)メソッドとremove(int index)メソッドを別途書き換える必要があります.Collectionインタフェース仕様の推奨に従って、プログラマは通常void(パラメータなし)とcollection構築方法を提供する必要があります.他の抽象collection実装とは異なり、プログラマは反復器実装を提供する必要はありません.反復器およびリスト反復器は、get(int index)、set(int index、Object element)、set(int index、Object element)、set(int index、Object element)、add(int index、Object element)、remove(int index)のような「ランダムアクセス」方法で実現されます.このクラスの各非抽象メソッドのドキュメントは、その実装を詳細に説明しています.実装するcollectionがより効率的な実装を可能にする場合、これらのメソッドの各メソッドを書き換えることができます.