Alternative à une instruction goto en Java

Ce qui est une autre fonction pour le goto mot-clé en Java?

Depuis Java ne dispose pas d'un goto.

  • Vous demandez la curiosité, et vous n'allez pas l'utiliser dans un véritable programme Java, droit?
  • son OK ... il ne peut pas, même si il veut 🙂
  • Pouvez-vous donner un exemple du type de code que vous écrivez si goto est disponible en Java? Je pense que c'est là que réside la question la plus importante.
  • Je seconde polygene, pourriez-vous s'il vous plaît mettre à jour votre question à indiquer pourquoi votre programme a besoin d'un goto?
  • suis dans la boucle while, au cours d'une itération, il y a 3 conditions sur la base des critères de condition, je veux transférer les controlto directement
  • En fait, Java a le mot-clé goto cependant il n'existe pas de situation dans laquelle vous pouvez l'utiliser. par exemple, const. Au lieu de goto, vous pouvez utiliser continuer, break, interrupteur, le retour d'un sous-méthode. Cela dépend de ce que vous essayez de faire.
  • On parle toujours de ne jamais utiliser un goto, mais je pense qu'il y a vraiment une bonne utilisation dans le monde réel de cas qui est assez bien connu et utilisé.. C'est à dire, faire assurez-vous d'exécuter du code avant un retour de fonction.. en général, sa suppression des verrous ou ce n'est pas, mais dans mon cas, j'aimerais être capable de sauter d'une pause juste avant le retour afin que je puisse faire obligatoire de nettoyage. Bien sûr, un programme salie avec des goto partout serait horrible, mais si restreint pour le corps de méthode, il ne semble pas que du mauvais, aussi longtemps que vous suivez une convention (seulement passer à la fin de fonctions, de ne jamais sauvegarder)
  • Vous êtes en bonne compagnie. Linus Torvalds a passionnément défendu goto kerneltrap.org/node/553. Sans doute le plus notable de l'omission de Projet de Pièce de monnaie.
  • Je suis face à un même problème aussi. Donc je suis en utilisant poursuivre, mais il montre l'erreur qu'une boucle lable: myLable. Ne continuer à travailler uniquement avec des boucles?
  • n'essayez pas-enfin faire le travail dans cet exemple?
  • try/finally fonctionne bien dans la plupart des cas, et je dirais que c'est suffisant. Le seul inconvénient est que vous ne pouvez pas simplement sauter à la clause finally (facilement). Peut-être que vous pouvez lancer manuellement une exception que vous êtes attraper silencieusement de le faire bien (pas sûr si cela fonctionne mais je ne vois pas pourquoi il ne serait pas).
  • au lieu de cela, vous pouvez utiliser une instruction if pour bloquer le reste de votre code. 🙂
  • Vous avez besoin d'imaginer un code qui est profondément imbriquée déjà bien.. Comment voulez-vous empêcher quelqu'un d'écrire du code dans le futur et qui est exécuté à l'extérieur que si l'instruction.. dire que vous êtes déjà 3 niveaux de profondeur dans si les déclarations quand vous arrivez à ce point où vous avez besoin pour nettoyer et sortir de la routine.
  • finally capte le chemin d'exécution pour break trop, de sorte que vous pouvez passer à la enfin avec try { do { break; } while (false) } finally { } mais bien sûr finally n'est nécessaire que si vous êtes returning ou attendre une exception ainsi que faire la break: si vous n'êtes breaking puis do{ } while(false) suffira.
  • Je ne savais pas que vous pourriez pause d'une instruction try. Nice!
  • Vous ne pouvez pas casser à partir d'une instruction try". La pause est de le "faire". Le point est, quand à la fin de l'essai est atteint -- par quelque moyen que ce soit -- enfin à exécuter. Même si vous utilisez un "retour". La définition de enfin, c'est qu'il va exécuter lorsque le contrôle des feuilles de la "essayer". N'importe comment. Donc, si vous avez le code que vous voulez passer, et ne vois pas de moyen simple de les envelopper dans une "si" comme Andres suggère, mettre le try/finally dans sa propre routine, de sorte que vous pouvez utiliser le bouton "retour".
  • Bon point, try{}finally{} est probablement une meilleure solution dans la plupart des cas de goto. FWIW, je n'ai jamais utilisé une instruction goto en c ou en toute autre langue qui la prend en charge.
  • 3 conditions: Commutateur si le 3 ne diffèrent que de la valeur (cas 1, cas 2, 3). "If / else if / else", pour des maladies plus complexes.
  • Vous pouvez utiliser des gotos correctement (si il ya un tel terme) à l'aide de ce bytecode à la modification de la bibliothèque github.com/footloosejava/JavaGoto
  • vous faites une supposition erronée. Java depuis que j'ai rememeber a toujours eu le goto mot-clé. docs.oracle.com/javase/tutorial/java/nutsandbolts/... . ( Croyez-moi, c'est une très délicate question de la certification. )

InformationsquelleAutor gmhk | 2010-03-12