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