![](/img/trans.png)
[英]How to create a constructor that takes the capacity of a class that contains an integer and an array of objects
[英]How to create a constructor that takes an array parameter and initialise the values in an underlying array?
如何创建一个接受数组参数的构造函数并在 Java 中初始化底层数组中的值?
构造函数应该这样做,当我在 main 中调用它时,将一个数组作为参数传递给它,构造函数输出的初始化对象与数组参数相同。
public class MyClass<E> {
protected E[] underlyingArray;
public MyClass(Object[] arr) {
underlyingArray = (E[]) new Object[arr.length];
for (int i = 0; i < arr.length; i++) {
this.underlyingArray[i] = (E) arr[i];
}
}
public void print() {
for (int i = 0; i < size; i++) {
System.out.println(i + ": " + underlyingArray[i]);
}
}
public static void main(String[] args) {
final String[] array = { "d", "e", "f" };
final MyClass myArray = new MyClass((Object[])array);
myArray.print();
预期的:
0: d
1: e
2: f
实际:我得到一个索引越界异常,因为myArray
在通过myClass
构造函数传递arr
后从未被初始化。
我在MyClass
构造函数中尝试了几种组合,但未能成功初始化底层数组myArray
。
该代码有效,但在您的情况下不需要泛型
class MyClass {
private Object[] underlyingArray;
MyClass(Object[] arr) {
underlyingArray = new Object[arr.length];
for (int index = 0; index < arr.length; index++) {
this.underlyingArray[index] = arr[index];
}
}
public void print() {
for (int index = 0; index < underlyingArray.length; index++) {
System.out.println(index + " : " + underlyingArray[index]);
}
}
public static void main(String[] args) {
final String[] array = { "d", "e", "f" };
final MyClass myArray = new MyClass(array);
myArray.print();
}}
代码工作得很好。 检查您的print()
方法。 这对我有用。
public class MyClass<E> {
protected E[] underlyingArray;
public MyClass(Object[] arr) {
underlyingArray = (E[]) new Object[arr.length];
for (int i = 0; i < arr.length; i++) {
this.underlyingArray[i] = (E) arr[i];
}
}
public void print(){
for(int i=0;i<underlyingArray.length;i++){
System.out.println(i+": "+underlyingArray[i]);
}
}
}
public static void main(String[] args) {
final String[] array = { "d", "e", "f" };
final MyClass myArray = new MyClass((Object[])array);
myArray.print();
}
谢谢大家,我的代码不起作用的原因是因为我没有设置(未包含在代码段中)作为构造函数初始化的一部分的附加size
变量。 这解释了我得到的 indexOutOfBounds 异常,因为size
始终为 0。
很抱歉在信息不完整的情况下提出问题。 代码在上面的代码段中运行良好。 应得的反对票。 再次感谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.