Java DefaultListModel的removeAllElements()和clear()之间有什么区别?

Java DefaultListModel的removeAllElements()和clear()之间有什么区别?,java,swing,defaultlistmodel,Java,Swing,Defaultlistmodel,java swing中的DefaultListModel方法的removeAllElements()和clear()之间有什么区别 报告说:- 公共空间清除() 删除所有 此列表中的元素。名单将 此调用返回后将为空 (除非它抛出异常) 及 公共无效删除催款单() 从此列表中删除所有组件 并将其大小设置为零 两者基本上都从列表中删除了所有元素,那么有什么区别呢?如何决定何时使用哪个?它们都是相同的。 DefaultListModel在引擎盖下使用向量。 clear()方法是后来在重新编写Vecto

java swing中的
DefaultListModel
方法的
removeAllElements()
clear()
之间有什么区别

报告说:-

公共空间清除()

删除所有 此列表中的元素。名单将 此调用返回后将为空 (除非它抛出异常)

公共无效删除催款单()

从此列表中删除所有组件 并将其大小设置为零


两者基本上都从列表中删除了所有元素,那么有什么区别呢?如何决定何时使用哪个?

它们都是相同的。

DefaultListModel
在引擎盖下使用
向量。
clear()方法是后来在重新编写Vector以适应集合API时添加的

在版本1.3中,
Collections API
进入,因此
向量
被重新写入
列表
界面

为了使其向后兼容,他们只需将调用转发到现有的旧方法(如果可能)

编辑 来自Java源代码:


我们能用其中一个代替任何一个吗?或者使用有一些限制?如果您查看
DefaultListModel
源代码,就会发现这两种方法完全相同,因此您可以根据需要使用其中一种方法。我要补充的是,
clear()
更有意义,因为它与集合的方法名相同。很好,我在写评论时没有读过javadoc!根据Javadoc,clear()方法不是后来添加的,否则它会有@since注释。结论:这两种方法从一开始就存在。Collections和Swing都是在1.2中引入的。
/**
 * 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);
        }

}