2014-01-30 70 views
0

我想要在地图上显示带有绘制线条的图像,并为图像中的每个单独部分(几条连接线)分隔图像。我写了这个代码:返回值时不兼容的类型

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:不兼容的类型 要求:java.awt.image.BufferedImage中 发现:java.awt.image中.BufferedImage []

任何人都可以帮助我吗?

感谢

+0

难道你不明白有关该错误信息是什么? –

+1

你有两个返回语句,一个返回一个BufferedImage,另一个返回一个BufferedImages数组;该方法声明它只返回一个BufferedImage ...并且您想知道编译器为什么会感到困惑... – MadProgrammer

+0

该方法的返回类型是BufferedImage

回答

0

方法的返回类型为BufferedImage的
但你试图返回BufferedImage的阵列。那是你的错误发生。
顺便说一句:你真的有2个返回语句?

1

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

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

+0

它不是 - 或者。两个顺序返回语句是编译时错误([unreachable statement error](http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.21)) – MByD

+0

那么,编译器不喜欢错误匹配的返回值。一旦解决了,你是对的,两个'return'语句也是一个问题。 – clay

0

有些人可能会觉得困惑时,他们不知道

BufferedImage lineImage1[] = null; 

相同

BufferedImage[] lineImage1 = null; 

,你不能有两个返回时,它在Java中是非法的。

所以,如果你想返回多个对象,你可以这样做

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

非常感谢所有帮助过我的人 – user3186565