java - 强制调用父类中的特定构造函数

标签 java inheritance constructor overloading

我第一次遇到以下情况:

我有following java class :

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

最佳答案

如果您想调用 new Values(initialCapacity),其中 initialCapacityint,那么您应该在 Values 类中拥有这样的构造函数:

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

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

关于java - 强制调用父类中的特定构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16147967/

相关文章:

java - JNI 和构造函数

java - 使用着色器在 Windows 中工作但在 Linux 中不工作的 OpenGL 渲染

java - 找出数组类型来比较java中的数组

Java Awt 钢笔工具 : Graphic disappeared

python - 如何在 Django 中使用具有相同属性的另一个模型创建对象

c++ - 理解 C++ 中的继承和多态性

java - 标签移动时不调用paintComponent

c++ - 为什么派生类可以调用基类构造函数两次?

c++ - 来自 Base Ctor 的纯虚函数调用

python - Django 忽略构建模型时的额外参数