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)
在有问题的行add
System.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[]>();