web-dev-qa-db-fra.com

Que fait return lorsqu'il est utilisé dans une instruction if?

Que fait le retour dans les instructions if dans le code suivant?

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;
}

Est-ce que cela nous fait sortir de l'instruction if et passe à l'instruction suivante ou de la méthode startElement?

14
uniquesupri

Les retours dans le code ci-dessus vous sortiront de la méthode.

15
Scott

Il termine la méthode pour que le code en dessous ne soit pas exécuté.

9
mthpvg

Est-ce que cela nous sort de l'instruction if et passe à l'instruction suivante Ou de la méthode startElement?

Il vous fait sortir de la méthode .. L'instruction return termine l'exécution d'une fonction

8
eMi

Oui. Le retour ici prendra le contrôle de la méthode.

2
Alex

il retournera ce que vous avez déclaré dans la tête de la méthode (ici void = rien = il mettra fin à la méthode)

2
Neifen

return prend toujours le contrôle de la méthode appelante. 

2
Tushar Vengurlekar

Le retour ici est probablement utilisé pour "améliorer" les performances de la méthode, de sorte que les autres comparaisons ne soient pas exécutées, une fois que le scénario requis est exécuté.

Cependant, ce n'est pas une bonne pratique d'avoir plusieurs points de retour dans une méthode.

Comme indiqué dans mes commentaires, j'essaierais d'adopter une approche différente pour obtenir le flux du code en question.

0
Romeo

Le retour mettra fin au flux de la méthode et est fonctionnellement identique à l’utilisation d’une chaîne else if plus courte, comme

/* if (localName.equals("channel")) {
    currentstate = 0; // This can be removed because it's 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;
}
0
Elliott Frisch