Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
声明泛型数组的java_Java_Arrays_Generics - Fatal编程技术网

声明泛型数组的java

声明泛型数组的java,java,arrays,generics,Java,Arrays,Generics,首先,我是Java新手,经验很少 在一个类中,我有以下属性 private List<Arc> arcs[]; // an array of a List of type Arc 但它不会编译。我一直在试图找出如何初始化这种类型的数组,我看到了array.newinstance的用法,但我不理解 谢谢你的帮助 解决方案: arcs=新列表[500] 使用以下命令: arcs = new List[500]; 但不是“Lista” 恐怕您这里的问题只是输入错误…请使用以下选项: a

首先,我是Java新手,经验很少

在一个类中,我有以下属性

private List<Arc> arcs[]; // an array of a List of type Arc
但它不会编译。我一直在试图找出如何初始化这种类型的数组,我看到了array.newinstance的用法,但我不理解

谢谢你的帮助

解决方案:

arcs=新列表[500]

使用以下命令:

arcs = new List[500];
但不是“Lista”

恐怕您这里的问题只是输入错误…

请使用以下选项:

arcs = new List[500];
但不是“Lista”


恐怕你这里的问题只是打字错误…

你好像把东西混在一起了

如果您需要的是一维数组,则可以使用列表或数组,但不能同时使用两者:

    List<Arc> list = new ArrayList<Arc>();
    list.add(new Arc());

    Arc[] array = new array[1];
    array[0] = new Arc();
List List=new ArrayList();
添加(新弧());
Arc[]数组=新数组[1];
数组[0]=新圆弧();
除非您确实需要数组列表(二维结构),但情况似乎并非如此

编辑

根据您的评论,您需要一组列表,如下所示:

List<Arc>[] listOfArrays = new List[500]; //you can't easily mix arrays and generics
List<Arc> list = new ArrayList<Arc>();
list.add(new Arc());
listOfArrays[0] = list;
List[]listOfArrays=新列表[500]//你不能轻易地混合数组和泛型
列表=新的ArrayList();
添加(新弧());
列表阵列[0]=列表;
ps:您也可以使用列表列表:

List<List<Arc>> listOfLists = new ArrayList<List<Arc>>();
List<Arc> list = new ArrayList<Arc>();
list.add(new Arc());
listOfLists.add(list);
listOfLists=newarraylist();
列表=新的ArrayList();
添加(新弧());
添加(列表);

你似乎把这里的东西混在一起了

如果您需要的是一维数组,则可以使用列表或数组,但不能同时使用两者:

    List<Arc> list = new ArrayList<Arc>();
    list.add(new Arc());

    Arc[] array = new array[1];
    array[0] = new Arc();
List List=new ArrayList();
添加(新弧());
Arc[]数组=新数组[1];
数组[0]=新圆弧();
除非您确实需要数组列表(二维结构),但情况似乎并非如此

编辑

根据您的评论,您需要一组列表,如下所示:

List<Arc>[] listOfArrays = new List[500]; //you can't easily mix arrays and generics
List<Arc> list = new ArrayList<Arc>();
list.add(new Arc());
listOfArrays[0] = list;
List[]listOfArrays=新列表[500]//你不能轻易地混合数组和泛型
列表=新的ArrayList();
添加(新弧());
列表阵列[0]=列表;
ps:您也可以使用列表列表:

List<List<Arc>> listOfLists = new ArrayList<List<Arc>>();
List<Arc> list = new ArrayList<Arc>();
list.add(new Arc());
listOfLists.add(list);
listOfLists=newarraylist();
列表=新的ArrayList();
添加(新弧());
添加(列表);

理想情况下,为了避免警告,您应该使用列表列表

List< List<Arc>> arcLists = new ArrayList< List< Arc >>();
ListarcLists=newarraylist>();
当然,在Java7中,使用类型推断可能会显得更简洁一些

如果您非常喜欢阵列,请使用

arcs = (ArrayList<Arc>[]) new ArrayList[500];
arcs=(ArrayList[])新的ArrayList[500];

理想情况下,为了避免警告,您应该使用列表列表

List< List<Arc>> arcLists = new ArrayList< List< Arc >>();
ListarcLists=newarraylist>();
当然,在Java7中,使用类型推断可能会显得更简洁一些

如果您非常喜欢阵列,请使用

arcs = (ArrayList<Arc>[]) new ArrayList[500];
arcs=(ArrayList[])新的ArrayList[500];

您不能随心所欲,因为数组在运行时包含有关其组件类型的信息。泛型没有。因此,要创建数组,必须知道类型,这意味着在这种情况下不能使用泛型

这就是为什么代码
List[]arcs
有效,而
newarraylist[500]
无效的原因

当您尝试执行类似操作时,也会出现相同的错误(T是通用的)

编译器失败的错误是:
无法创建通用数组

为了避免这种情况,您可以创建如下内容:

List[]arcs=newarraylist[500]

但是thsi不是类型安全的,要获得类型保存解决方案,您应该使用以下代码:


List lista=new ArrayList()

您无法执行所需操作,因为数组在运行时包含有关其组件类型的信息。泛型没有。因此,要创建数组,必须知道类型,这意味着在这种情况下不能使用泛型

这就是为什么代码
List[]arcs
有效,而
newarraylist[500]
无效的原因

当您尝试执行类似操作时,也会出现相同的错误(T是通用的)

编译器失败的错误是:
无法创建通用数组

为了避免这种情况,您可以创建如下内容:

List[]arcs=newarraylist[500]

但是thsi不是类型安全的,要获得类型保存解决方案,您应该使用以下代码:


List lista=new ArrayList()

Hmmm,您的变量名称有点不正确。。。弧的列表应该称为弧,你有一系列的列表,这是你真正想要的吗?否则我会称之为arcLists(鉴于我无法将其与现实世界联系起来并称之为“ArcDeverage”或更基于使用的东西)@JeffWatkins是的,我想要的是一系列列表。我如何声明这一点请编辑你的问题,因为它是以前,并接受答案。目前你的问题是解决方案。泛型和数组真的不能很好地混合。首先要尽量避免它们。嗯,你的变量的名字有点不好。。。弧的列表应该称为弧,你有一系列的列表,这是你真正想要的吗?否则我会称之为arcLists(鉴于我无法将其与现实世界联系起来并称之为“ArcDeverage”或更基于使用的东西)@JeffWatkins是的,我想要的是一系列列表。我如何声明这一点请编辑你的问题,因为它是以前,并接受答案。目前你的问题是解决方案。泛型和数组真的不能很好地混合。首先尽量避免它们。我需要每个“框”,数组的每个位置都有一个列表。@Alessandroempire查看我的编辑。是的,这是我建议的。我真傻。当你还在学习的时候。谢谢你的帮助,我需要每个“框”,数组的每个位置都有一个列表。@Alessandroempire查看我的编辑。是的,这是我建议的。我真傻。当你还在学习的时候。谢谢你的帮助,第一条语句无法编译。@assylias你说得对。。。哎呀……第一条语句无法编译。@assylias你说得对。。。哎呀。。。