Подтвердить что ты не робот

Что делает return при использовании внутри оператора if?

Что делает возврат внутри операторов if в следующем коде?

public void startElement(String namespaceURI, String localName,String qName, 
                                         Attributes atts) throws SAXException
{
    depth++;
    if (localName.equals("channel"))
    {
        currentstate = 0;
        return;
    }
    if (localName.equals("image"))
    {
        // record our feed data - you temporarily stored it in the item :)
        _feed.setTitle(_item.getTitle());
        _feed.setPubDate(_item.getPubDate());
    }
    if (localName.equals("item"))
    {
        // create a new item
        _item = new RSSItem();
        return;
    }
    if (localName.equals("title"))
    {
        currentstate = RSS_TITLE;
        return;
    }
    if (localName.equals("description"))
    {
        currentstate = RSS_DESCRIPTION;
        return;
    }
    if (localName.equals("link"))
    {
        currentstate = RSS_LINK;
        return;
    }
    if (localName.equals("category"))
    {
        currentstate = RSS_CATEGORY;
        return;
    }
    if (localName.equals("pubDate"))
    {
        currentstate = RSS_PUBDATE;
        return;
    }
    // if you don't explicitly handle the element, make sure you don't wind 
           // up erroneously storing a newline or other bogus data into one of our 
           // existing elements
    currentstate = 0;
}

Извлекает ли мы нас от оператора if и переходит к следующему оператору или выводит нас из метода startElement?

4b9b3361

Ответ 1

Возврат в приведенном выше коде приведет вас к методу.

Ответ 2

Он заканчивает метод, поэтому код ниже него не выполняется.

Ответ 3

Извлекает ли мы нас от оператора if и переходит к следующему или он выводит нас из метода startElement?

Это выводит вас из метода. Оператор return завершает выполнение функции

Ответ 4

он вернет то, что вы объявили в голове метода (здесь void = nothing = он просто закончит метод)

Ответ 5

return всегда берет управление вне метода вызова.

Ответ 6

Да. Возврат здесь будет осуществлять контроль из метода.

Ответ 7

Возврат здесь, вероятно, используется для "улучшения" производительности метода, так что другие сравнения не выполняются после выполнения необходимого сценария.

Однако, не очень хорошая практика иметь несколько точек возврата в методе.

Как указано в моих комментариях, я попробую другой подход для достижения потока кода, о котором идет речь.

Ответ 8

Возврат завершает поток метода и функционально идентичен использованию более короткой цепочки else if, например

/* if (localName.equals("channel")) {
    currentstate = 0; // This can be removed because it the default below.
} else */ if (localName.equals("image")) {
    // record our feed data - you temporarily stored it in the item :)
    _feed.setTitle(_item.getTitle());
    _feed.setPubDate(_item.getPubDate());
} else if (localName.equals("item")) {
    // create a new item
    _item = new RSSItem();
} else if (localName.equals("title")) {
    currentstate = RSS_TITLE;
} else if (localName.equals("description")) {
    currentstate = RSS_DESCRIPTION;
} else if (localName.equals("link")) {
    currentstate = RSS_LINK;
} else  if (localName.equals("category")) {
    currentstate = RSS_CATEGORY;
} else if (localName.equals("pubDate")) {
    currentstate = RSS_PUBDATE;
} else {
    currentstate = 0;
}