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?
Les retours dans le code ci-dessus vous sortiront de la méthode.
Il termine la méthode pour que le code en dessous ne soit pas exécuté.
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
Oui. Le retour ici prendra le contrôle de la méthode.
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)
return prend toujours le contrôle de la méthode appelante.
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.
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;
}