gpt4 book ai didi

java - 使用泛型创建 Array 对象

转载 作者:行者123 更新时间:2023-12-04 20:50:36 25 4
gpt4 key购买 nike

所以我正在尝试创建一个简单的程序,允许我将一个 Int、String、double... 数组放入一个对象并打印它:

public class Array<E> {

private E[] data;
private int size;

public Array(int size, E[] data)
{
this.size=size;
for(int i=0; i<size; i++) this.data[i]=data[i];
}

public String toString()
{
String s=new String();
for(int i=0; i<size; i++) s+=data[i]+" ";
return s;
}
}

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
int A[]= {1, 3, 5, 7};
Array<Integer> niza=new Array<Integer>(4, A);
System.out.println(niza.toString());
}

}

但是每当我尝试创建对象时它都会给我这个错误:

线程“main”中的异常 java.lang.Error: Unresolved 编译问题: 构造函数 Array(int, int[]) 未定义

at test.Main.main(Main.java:8)

对导致问题的原因和可能的解决方案有任何想法吗?

提前致谢!

最佳答案

问题是

    int A[]= {1, 3, 5, 7};
Array<Integer> niza=new Array<Integer>(4, A);

声明一个 ints 数组,而构造函数需要 Integer[]int 是一种基本类型,与 Integer 不同。编译器在可能和需要时在 intInteger 之间转换,but this conversion is not defined for arrays.

如果您将数组声明为

    Integer A[]= {1, 3, 5, 7};
Array<Integer> niza=new Array<Integer>(4, A);

your code will compile, but fail with a NullPointerException因为成员 data 没有初始化。 You can easily fix that with

private final E[] data;

public Array(int size, E[] data)
{
this.size=size;
this.data = Arrays.copyOf(data, size);
}

虽然我更喜欢使用 ArrayList 而不是数组...

关于java - 使用泛型创建 Array 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46884635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com