【发布时间】:2013-04-22 13:10:35
【问题描述】:
我第一次遇到以下情况:
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));
}
【问题讨论】:
-
问题出在哪里?
super(vals.length);应该调用你想要的构造函数 -
@Crystark 这里有些问题。调用 super(vals.length) 调用 ArrayList, initialCapacity 构造函数。你怎么知道 conscturctor 没有被调用?
-
建议:最好实现 List
-
@MarcoForberg 我已经用我想做的事情编辑了我的帖子。它应该是不言自明的。正如你所看到的,我自己在循环,所以我不想做两次。
-
@Eugene 这不是被调用的问题。我的问题是我不希望调用“对象构造函数”而是调用“int 构造函数”
标签: java inheritance constructor overloading