Dav*_*ers 2 java arrays generics
所以我正在尝试创建一个简单的程序,允许我将一个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());
}
}
Run Code Online (Sandbox Code Playgroud)
但是,每当我尝试创建对象时,它都会给我这个错误:
线程"main"中的异常java.lang.Error:未解决的编译问题:构造函数Array(int,int [])未定义
at test.Main.main(Main.java:8)
Run Code Online (Sandbox Code Playgroud)
什么导致问题和可能的解决方案?
提前致谢!
问题是
int A[]= {1, 3, 5, 7};
Array<Integer> niza=new Array<Integer>(4, A);
Run Code Online (Sandbox Code Playgroud)
声明一个数组ints,而构造函数期望Integer[].int是一种基本类型,是一种不同的类型Integer.编译器之间进行转换int,并Integer在可能的情况和需要,但这种转换还没有为数组定义.
如果将数组声明为
Integer A[]= {1, 3, 5, 7};
Array<Integer> niza=new Array<Integer>(4, A);
Run Code Online (Sandbox Code Playgroud)
您的代码将编译,但NullPointerException因为该成员data未初始化而失败.您可以轻松解决这个问题
private final E[] data;
public Array(int size, E[] data)
{
this.size=size;
this.data = Arrays.copyOf(data, size);
}
Run Code Online (Sandbox Code Playgroud)
虽然我更愿意使用ArrayList而不是数组......
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |