2014-01-30 6 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

У вас есть два оператора return, один возвращает BufferedImage, другой возвращает массив BufferedImages; метод объявляет, что возвращает только BufferedImage ... и вы задаетесь вопросом, почему компиляторы запутались ... – MadProgrammer

+0

Тип возврата метода BufferedImage

ответ

0

Вернуться тип метода BufferedImage
Но вы пытаетесь вернуть массив BufferedImage. Это твоя ошибка.
BTW: у вас действительно есть 2 заявления о возврате?

1

lineImage1 определяется как BufferedImage lineImage1[], который представляет собой массив BufferedImages. Возвращаемое значение метода: BufferedImage.

Вы либо хотите изменить тип возврата на массив из BufferedImage, либо вернуть только BufferedImage.

+0

это не либо - либо. два последовательных оператора return - ошибка времени компиляции ([ошибка недоступного оператора] (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

Смежные вопросы