3

JavaスイングのメソッドremoveAllElements()clear()メソッドの違いは何ですか?DefaultListModel

DefaultListModelのJava ドキュメントには次のように書かれています:-

public void クリア()

このリストからすべての要素を削除します。この呼び出しが返された後、リストは空になります (例外がスローされない限り)。

public void removeAllElements()

このリストからすべてのコンポーネントを削除し、そのサイズをゼロに設定します。

どちらも基本的にリストからすべての要素を削除するので、違いは何ですか? どちらをいつ使用するかをどのように決定しますか?

4

1 に答える 1

4

どちらも同じです。

DefaultListModelVectorボンネットの下を使用します。
コレクション API に適合するように Vector が書き直されたときに、clear() メソッドが後で追加されました。

バージョン 1.3 ではCollections APIが登場したため、はインターフェイスVectorに適合するように書き直されました。List

下位互換性を保つために、利用可能で可能な場合は、呼び出しを古い既存のメソッドに転送するだけでした。

編集

Java ソースから:

/**
 * Removes all components from this list and sets its size to zero.
 * <blockquote>
 * <b>Note:</b> Although this method is not deprecated, the preferred
 *    method to use is <code>clear</code>, which implements the 
 *    <code>List</code> interface defined in the 1.2 Collections framework.
 * </blockquote>
 *
 * @see #clear()
 * @see Vector#removeAllElements()
 */
public void removeAllElements() {

        int index1 = delegate.size()-1;
        delegate.removeAllElements();

        if (index1 >= 0) {
            fireIntervalRemoved(this, 0, index1);
        }

}
于 2011-05-24T06:42:13.787 に答える