Java 抽象数据类型:对象数组
所以我有一个类,我想创建一个接受int的方法,并创建一个新的数组。如果我 申报Java 抽象数据类型:对象数组,java,arrays,data-structures,Java,Arrays,Data Structures,所以我有一个类,我想创建一个接受int的方法,并创建一个新的数组。如果我 申报 newArray数组1=新的newArray(10); 这将创建一个大小为10的数组 我试过了 public class newArray<O> { private O[] array; public newArray(int newArraySize) { newArray<O>[] =
newArray数组1=新的newArray(10);
这将创建一个大小为10的数组
我试过了
public class newArray<O>
{
private O[] array;
public newArray(int newArraySize)
{
newArray<O>[] = new newArray<O>[newArraySize];
}
}
公共类newArray
{
专用O[]阵列;
公共newArray(int newArraySize)
{
newArray[]=newnewarray[newArraySize];
}
}
但是我得到了一个“无法创建newArray的通用数组”错误。您就快到了
请看下面的代码,以获取有关如何初始化、填充和打印数组的示例
import java.util.*;
public class Test
{
public static void main(String[] args)
{
// define the array
List<Integer> array1 = new ArrayList<Integer>(10);
// initialize the array with some value. In this case, the Integer "200"
// note that the array doesn't have a hard limit of 10 as define above. You can change the following value to 20 and it will still work
for (int i = 0; i < 10; i++)
{
array1.add(i, 200);
}
// print the array
System.out.println(array1);
}
}
import java.util.*;
公开课考试
{
公共静态void main(字符串[]args)
{
//定义数组
列表array1=新的ArrayList(10);
//使用某个值初始化数组。在本例中,整数“200”
//请注意,数组没有上面定义的10的硬限制。您可以将以下值更改为20,它仍然可以工作
对于(int i=0;i<10;i++)
{
阵列1.添加(i,200);
}
//打印阵列
系统输出打印LN(数组1);
}
}
这有帮助吗
ArrayList<Integer[][]> r = new ArrayList<Integer[][]>(10);
// You could replace the above list with a custom list
Integer[][] ob = new Integer[1][2];
ob[0][0] = 10;
ob[0][1] = 20;
r.add(ob);
for(Integer[][] o : r)
for(Integer[] o1 : o)
for(Integer o2 : o1)
System.out.println(o2);
不幸的是,您无法创建通用数组。这是由于泛型是通过类型擦除在Java中实现的。实际上,在编译之前,所有泛型类型都被“擦除”为它们的边界类型(通常是
Object
),因此编译器看到的都是Object
,而不是T
或E
或O
。擦除过程生成自动强制转换,以确保程序仍能按预期工作
这意味着您不能执行以下操作:
(这会被删除到new O()
,编译器不知道如何处理它)new Object()
(这会被删除到newo[]
,这对编译器也没有帮助)new Object()
array = (O[]) new Object[size];
事实上,Java的集合框架就是这样做的。您将得到一个“unchecked”警告,因为编译器无法证明此转换是安全的,但实际上没有其他选项
另外,关于你的问题,我想指出一些你可能知道或不知道的事情:
- 不能将基元用作类型参数
没有类型参数对象
应该是newArray[]=newnewarray[newArraySize]
array=newnewarray[newArraySize]代码>。您已经声明了要使用的数组。所以使用它吧李>
实际上,看起来您正在实现自己的
ArrayList
。如果你是,祝你好运!如果没有,您应该真正使用现有的实现,除非您需要一些其他方式无法获得的特殊行为…这是因为您无法在Java中创建通用数组。这是Java中泛型的一个限制。请阅读这里:您能否澄清一下:“这将创建一个大小为10的数组”。哪种类型的数组?
10
20
array = (O[]) new Object[size];