繁体   English   中英

多个构造函数初始化一个对象

[英]Multiple constructors initializing one object

我想知道是否可以调用多个构造函数并通过它们初始化一个对象值。 我一直在寻找答案,但是没有找到答案。 让我向您展示一些代码,并感谢您的提前帮助:

    int MAX_VALUE; // Field variable
    boolean[] elements = new boolean[10000]; // Field variable

    public IntegerSet(int maxValue) {
        this.MAX_VALUE = maxValue;
    }
    public IntegerSet(boolean[] tmp) {
        int i = 0;

        for(i = 0; i < tmp.length; ++i)
            this.elements[i] = tmp[i];

        this.elements = Arrays.copyOf(this.elements, tmp.length);
    }

/*In main:*/

    // I just want to have one object, s1, and I want to be able
    // to access MAX_VALUE and elements by s1.MAX_VALUE and s1.elements
    IntegerSet s1 = new IntegerSet(50); 
    /* SOMETHING that uses second constructor with object s1*/

您不能调用多个构造函数来创建一个类的实例。 每个调用都会创建一个新实例,该实例将与另一个实例完全不同。 要使用构造函数设置int字段和数组,应将值传递给构造函数本身:

public IntegerSet(boolean[] tmp, int maxValue) {
    this.MAX_VALUE = maxValue;
    int i = 0;

    for(i = 0; i < tmp.length; ++i)
        this.elements[i] = tmp[i];

    this.elements = Arrays.copyOf(this.elements, tmp.length);
}

这相当于

public IntegerSet(boolean[] tmp, int maxValue) {
    this(maxValue);   // will call the constructor that takes one parameter
    int i = 0;

    for(i = 0; i < tmp.length; ++i)
        this.elements[i] = tmp[i];

    this.elements = Arrays.copyOf(this.elements, tmp.length);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM