[英]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.