返回值时不兼容的类型

时间:2014-01-30 20:54:45

标签: java swing

我希望在地图上显示带有绘制线条的图像,并为图像中的每个部分创建单独的图像(多条连接线条)。我写了这段代码:

public BufferedImage getLineImage() {
    BufferedImage lineImage = null;
    BufferedImage lineImage1[]=null;
    int i=0;

    if(image != null) {
        lineImage1[i] = new BufferedImage(image.getWidth(), image.getHeight(),                               image.getType());

        lineImage  = new BufferedImage(image.getWidth(), image.getHeight(), image.getType());

        Graphics2D g1 = lineImage1[i].createGraphics();
        Graphics2D g = lineImage.createGraphics();

        g.setColor(Color.WHITE);
        g.setStroke(new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));

        g1.setColor(Color.WHITE);
        g1.setStroke(new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));

        for(Section section : observeTraffic) {
            section.paintTags(g1);
            i++;
        }
        for(Section section : observeTraffic) {
            section.paintTags(g);
        }
    }

    return lineImage;
    return lineImage1;
}

但在最后一行我收到错误:不兼容的类型

java:不兼容的类型   required:java.awt.image.BufferedImage   发现:java.awt.image.BufferedImage []

有人可以帮帮我吗?

由于

3 个答案:

答案 0 :(得分:1)

lineImage1定义为BufferedImage lineImage1[],它是BufferedImages的数组。方法的返回值为BufferedImage

您要么将返回类型更改为BufferedImage的数组,要么只返回一个BufferedImage

答案 1 :(得分:0)

方法的返回类型是BufferedImage
但是你试图返回BufferedImage数组。那就是你的错误发生了 顺便说一下:你真的有2份退货声明吗?

答案 2 :(得分:0)

有些人在不知道的时候可能会感到困惑

BufferedImage lineImage1[] = null;

相同
BufferedImage[] lineImage1 = null;

你不能有两个回报,这在Java中是非法的。

因此,如果您想要返回多个对象,可以执行类似

的操作
public Object[] getLineImage() {
(...)
    Object[] o = new Object[2];
    o[0]=lineImage;
    o[1]=lineImage1;
    return o;
}