1

我第一次面对以下情况:

我有以下java类

public class Values extends ArrayList<Object>{
    public Values() {

    }

    public Values(Object... vals) {
        super(vals.length);
        for(Object o: vals) {
            add(o);
        }
    }
}

我想调用以下父级的构造函数

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));
}
4

1 回答 1

1

如果你想调用new Values(initialCapacity)where initialCapacityis an int,那么你应该在Values类中有这样一个构造函数:

public Values(int initialCapacity) {
    super(initialCapacity);
}

请注意,扩展集合类通常不是一个好主意。使用它们(委托、组合)而不是扩展它们。

于 2013-04-22T13:16:56.460 回答