Java PathIterator类型中的方法currentSegment(float[])不适用于参数(Double[])

Java PathIterator类型中的方法currentSegment(float[])不适用于参数(Double[]),java,eclipse,path-iterator,Java,Eclipse,Path Iterator,我试图在java程序中读取Path2D.Double的片段,Eclips不断告诉我: PathIterator类型中的方法currentSegment(float[])不适用于参数(Double[]) 但是在接口PathIterator中有两种方法似乎混淆了Eclipse(或me) 我自己的代码如下所示: PathIterator it= ((Path2D.Double) p3d).getPathIterator(null, 2d); Double x, y; while (!it.is

我试图在java程序中读取Path2D.Double的片段,Eclips不断告诉我:

PathIterator类型中的方法currentSegment(float[])不适用于参数(Double[])

但是在接口PathIterator中有两种方法似乎混淆了Eclipse(或me)

我自己的代码如下所示:

PathIterator it= ((Path2D.Double) p3d).getPathIterator(null, 2d);
  Double x, y;
  while (!it.isDone()) {
     Double coords[]= new Double[6];
     System.out.println("1");
     int art= it.currentSegment(coords);
     System.out.println("2");
     switch (art) {
     case PathIterator.SEG_MOVETO:
        movetoXY(coords[0], coords[1]);
        x= coords[0];
        y= coords[1];
        break;
     case PathIterator.SEG_LINETO:
        linetoXY(coords[0], coords[1]);
        break;
     case PathIterator.SEG_CLOSE:
        linetoXY(x, y);
        break;
     default:
        System.out.println("unbekanntes Segment " + art);
        break;
     }
     it.next();
  }
符合

     int art= it.currentSegment(coords);
标记为红色,工具提示上显示:

PathIterator类型中的方法currentSegment(float[])不适用于参数(Double[])

有一个方法具有float[],另一个方法具有double[],但名称相同
我在这里遗漏了什么?

Double[]和Double[]不是同一类型,因此您需要转换这些类型

Java8 Streams可以以一种语法非常清晰的方式做到这一点:

只有一件事很重要:Double是一个对象,所以Double[]可以保存空值。。。你需要检查一下

Double[] d = { 1.0, 2.0, 3.0, 4.0, 5.0, null };
double[] dArray = Arrays.stream(d).mapToDouble(x -> x == null ? 0.0 : x.doubleValue()).toArray();
System.out.println(Arrays.toString(dArray));
如果100%确定Double[]没有空值,则只需执行以下操作:

double[] dArray = Arrays.stream(d).mapToDouble(Double::doubleValue).toArray();

double!=Double
…对不起,我是在另一次阅读我自己的问题时做的。Double[]和Double[]之间存在差异。所以正确的行必须是:double coords[]=new double[6];你错过了这个:
double[] dArray = Arrays.stream(d).mapToDouble(Double::doubleValue).toArray();