考虑到我有一个方法,它将List作为参数传递.在这个方法中,我想在该列表中使用例如ArrayList特定的函数(比如trimToSize()).处理这样的问题的一般方法是什么?这里有两个例子:
第一种方法(我认为这不好)
private void doSomething(final List<T> list) {
// ... do something
((ArrayList<T>) list).trimToSize();
// ... do something
}
Run Code Online (Sandbox Code Playgroud)
第二种方法(我觉得这个更好)
private void doSomething2(final List<T> list) {
final List<T> myList = new ArrayList<T>();
// Collections.copy(myList, list); or
myList.addAll(list);
((ArrayList<T>) myList).trimToSize();
//..do something
}
Run Code Online (Sandbox Code Playgroud)
我很好奇这是什么问题的最佳解决方案.
Chi*_*chi 12
好吧,首选的选择就是首先编写方法来获取ArrayList.如果您需要ArrayList特定的功能,该方法没有业务需要List.将确保参数属于正确类型的责任转移给调用者,并且不要在方法内乱搞它.
private void doSomething(final ArrayList<T> list)如果只想将ArrayList作为参数,为什么不将方法声明为a ?