我第一次遇到以下情况:
public class Values extends ArrayList<Object>{
public Values() {
}
public Values(Object... vals) {
super(vals.length);
for(Object o: vals) {
add(o);
}
}
}
我想致电following parent's constructor:
public ArrayList(int initialCapacity) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
}
这可能吗?我正在发送一个int
,但它被Values的构造函数捕获。
修改
我最终想做的是:
Map<String,Object> document = getDocument();
List<String> indexFields = getIndexFields();
Values values = new Values(indexFields.size());
for (String field : indexFields) {
values.add(document.get(field));
}
答案 0 :(得分:1)
如果您要致电new Values(initialCapacity)
,其中initialCapacity
是int
,那么您应该在Values
类中拥有这样的构造函数:
public Values(int initialCapacity) {
super(initialCapacity);
}
请注意,扩展集合类通常不是一个好主意。使用它们(委托,组合)而不是扩展它们。