尝试通过其在子类中的引用来使用和实现数组,但它保持为空
Try to use and implement array by its reference in childclass but it stays null
对于 Java 中的一个项目,我想在超类中创建对数组的私有引用,但没有实现它。我想在子类中实现,所以我在超类中为该数组创建了一个 getter 方法。在子类构造函数中,我实现了数组,现在的问题是,即使我向引用添加了一个数组,超类中的数组引用仍为空。我想稍后在超类中使用该数组。
我将添加一些代码以便更好地理解。
我理解我的错,这在 Java 中不容易实现,但是有没有任何解决方案可以通过引用像这样“编辑”数组,或者我是否必须使用 setter方法?
//parent class
public abstract class Superclass {
private Test[] test_Values;
public Measurement[] getTestValues() {
return this.test_Values;
}
}
//child class
public class ChildClass extends SuperClass {
public ChildClass() {
Test[] measures = super.getTestValues();
measures = new Test[4];
}
}
在 parent 构造函数中初始化数组:
public abstract class Superclass {
private Test[] test_Values;
protected Superclass(int capacity) {
this.test_Values = new Test[capacity];
}
public Test[] getTestValues() {
return this.test_Values;
}
}
然后,您必须在 child classes 中使用 non-default 构造函数。
public class ChildClass extends SuperClass {
public ChildClass() {
super(4);
}
}
或者,为了进一步控制如何初始化数组中的值,您可以添加在 parent 的构造函数中使用的抽象方法:
public abstract class Superclass {
private Test[] test_Values;
protected Superclass() {
this.test_Values = initializeArray();
}
public Test[] getTestValues() {
return this.test_Values;
}
protected abstract Test[] initializeArray();
}
然后childclass需要实现那个抽象方法:
public class ChildClass extends SuperClass {
@Override
protected Test[] initializeArray() {
Test[] testValues = new Test[4];
// calculate elements
return testValues;
}
对于 Java 中的一个项目,我想在超类中创建对数组的私有引用,但没有实现它。我想在子类中实现,所以我在超类中为该数组创建了一个 getter 方法。在子类构造函数中,我实现了数组,现在的问题是,即使我向引用添加了一个数组,超类中的数组引用仍为空。我想稍后在超类中使用该数组。 我将添加一些代码以便更好地理解。
我理解我的错,这在 Java 中不容易实现,但是有没有任何解决方案可以通过引用像这样“编辑”数组,或者我是否必须使用 setter方法?
//parent class
public abstract class Superclass {
private Test[] test_Values;
public Measurement[] getTestValues() {
return this.test_Values;
}
}
//child class
public class ChildClass extends SuperClass {
public ChildClass() {
Test[] measures = super.getTestValues();
measures = new Test[4];
}
}
在 parent 构造函数中初始化数组:
public abstract class Superclass {
private Test[] test_Values;
protected Superclass(int capacity) {
this.test_Values = new Test[capacity];
}
public Test[] getTestValues() {
return this.test_Values;
}
}
然后,您必须在 child classes 中使用 non-default 构造函数。
public class ChildClass extends SuperClass {
public ChildClass() {
super(4);
}
}
或者,为了进一步控制如何初始化数组中的值,您可以添加在 parent 的构造函数中使用的抽象方法:
public abstract class Superclass {
private Test[] test_Values;
protected Superclass() {
this.test_Values = initializeArray();
}
public Test[] getTestValues() {
return this.test_Values;
}
protected abstract Test[] initializeArray();
}
然后childclass需要实现那个抽象方法:
public class ChildClass extends SuperClass {
@Override
protected Test[] initializeArray() {
Test[] testValues = new Test[4];
// calculate elements
return testValues;
}