我正在创建一个CustomerList类,目前:
package somestuff;
import java.util.ArrayList;
public class CustomerList {
ArrayList<Customer> custList;
}
我希望它扩展ArrayList;这是一个有效的“is-a”关系(CustomerList是一个ArrayList)?
编辑:道歉,我没有说清楚这篇文章。我的计划是将其作为JSP网站的一部分;我将查询数据库并使用Customer和CustomerList来存储结果。我的理论是,如果我想改变它们输出的顺序,它会使事情变得更容易。
答案 0 :(得分:3)
不,这是has-a
关系。 is-a
将是扩展(class)或实现(接口)。
在需要时使用ArrayList<Customer>
会不会更简单?
答案 1 :(得分:0)
如果你想真正扩展ArrayList
,正确的方法是:
public class CustomerList extends ArrayList<Customer> {
// ... add/override methods here
}
您想要添加哪种功能?
答案 2 :(得分:0)
您可以通过扩展(如Binyamin Sharet所说)或通过扩展is-a
接口并将方法的执行委派给java.util.List
来将其转换为custList
关系(查找Joshua Bloch)。
答案 3 :(得分:0)
您也可以使用委托。
class Customer{}
class CustomerList extends AbstractList<Customer>{
private final List<Customer> customers;
public CustomerList(List<Customer> customers){
this.customers = customers;
}
@Override
public Customer get(int index) {
return customers.get(index);
}
@Override
public int size() {
return customers.size();
}
//Override more methods as needed
}
这取决于你想做什么。 但是,使用组合物更简单,更好。