Java 将列表的子部分转换为数组时获取非法参数异常
我有一个列表Java 将列表的子部分转换为数组时获取非法参数异常,java,arrays,list,arraylist,illegalargumentexception,Java,Arrays,List,Arraylist,Illegalargumentexception,我有一个列表linePoints,它是一个点的列表 private List<Point> linePoints = new ArrayList<>(); 为什么我会得到一个非法的参数异常 编辑1:我做了一些测试,发现如果我更换了 tempList = linePoints.subList(linePoints.indexOf(p),i); 与 这会奏效的 编辑2:我找到了解决方案。结果表明,该行的第一个参数大于第二个参数 不过,现在我有另一个
linePoints
,它是一个点的列表
private List<Point> linePoints = new ArrayList<>();
为什么我会得到一个非法的参数异常
编辑1:我做了一些测试,发现如果我更换了
tempList = linePoints.subList(linePoints.indexOf(p),i);
与
这会奏效的
编辑2:我找到了解决方案。结果表明,该行的第一个参数大于第二个参数
不过,现在我有另一个问题:
polygons.add((Point[]) tempList.toArray());
我得到一个异常,无法强制转换返回的对象[]数组
tempList.toArray()
进入点[]。尝试以下操作:
private List<Point> linePoints = new ArrayList<Point>();
private List<Point[]> polygons = new ArrayList<Point[]>();
private List linePoints=new ArrayList();
私有列表多边形=新的ArrayList();
是否确定linePoints.indexOf(p)
在有问题的行addSystem.out.println(p instanceof Point)之前没有返回-1;系统输出打印LN(i);System.out.println(linePoints.indexOf(p);
并将这些行的输出添加到您的帖子中。@engineer我解决了这个问题,结果我只需要切换参数(第一个参数比第二个参数大),现在我有了一个新问题,尽管我在帖子中提到了。将(Point[])templast.toArray()
更改为Arrays.copyOf(templast.toArray(),templast.toArray().length,Point[].class);
…是的,因为这是旧样式。现在他可以使用菱形操作符了。这个怎么样:列表templast;
polygons.add((Point[]) tempList.toArray());
tempList.toArray()
private List<Point> linePoints = new ArrayList<Point>();
private List<Point[]> polygons = new ArrayList<Point[]>();