java - 如何创建一个接受数组参数并初始化底层数组中的值的构造函数?
问题描述
如何创建一个接受数组参数的构造函数并在 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
函数后从未初始化过。arr
myClass
我在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();
}}
推荐阅读
- python - 我想从 2 个嵌套列表中减去元素
- firebase-realtime-database - Firebase 实时数据库到 Firestore
- excel - 在 Excel VBA 中为不同的目标值添加多个范围
- tags - 如何使用 NextJs 安装 LinkedIn Insight 标签
- r - 相关图(Corrplot 热图)显示显着性水平但行和列会不同(选中)?
- sql - 两个使用可为空字段相互引用的 sql 表:陷阱?
- java-8 - Java 8流:通过对象中对象内部的属性获取对象列表
- python - Nginx-ajax-django:页面上出现 504 超时错误,错误日志:上游超时(110:连接超时),TTFB>1
- python - 如何取消嵌套熊猫中一列的“字典式”值?
- aws-lambda - 管理 multipart/form-data API Gateway 请求正文中的文件