Y a-t-il quelque chose comme Python avec strong> Gestionnaire de contexte en Java? Par exemple, disons que je veux faire quelque chose comme ce qui suit: p> Où dans Python, j'ai juste: p>
5 Réponses :
Pas pour le moment; Java n'a toujours pas ajouté de sucre syntaxique pour ce motif. Néanmoins, il ne sera pas aussi propre que avec code> (python) ou
en utilisant code> (C #), mais vous pouvez au moins nettoyer cela un peu en ayant juste un appel à
c.cfin () code> à l'intérieur d'un bloc
enfin code>, au lieu de deux fois que vous avez fait:
try {
// use c
} finally {
c.close()
}
Merci ... Je pouvais également utiliser un modèle de méthode de modèle qui nécessite une hiérarchie de classe laid. À votre santé.
Comme dit Tzaman, le secret utilise enfin; Généralement:
doWithResources(new WithResources() { public void doStuff(Resource1 r1, Resource2 r2) { // code goes here } });
Si vous avez plusieurs ressources pour allouer, le motif général s'applique proprement, mais cela n'est souvent pas évident pour les débutants: p> , et ainsi de suite et ainsi de suite. ainsi de suite si vous avez plus de ressources pour allouer. Si vous avez quelques-uns d'entre eux, vous serez sûrement tenté d'essayer d'éviter de nichier profond d'essayer ... Enfin des déclarations. Ne pas. Vous pouvez obtenir des ressources de ressource et une manipulation des exceptions à droite sans niché de nidifier si beaucoup d'essayer ... Enfin, les déclarations, mais le get droite sans nidifier, essayez ... Enfin, est encore plus la plus en plus la plus enduite que la nidification profonde. P> Si vous avez fréquemment besoin de Utilisez un ensemble de ressources, vous pouvez implémenter une méthode basée sur le foncteur pour éviter la répétition, comme: p> qui puisse utiliser comme ceci: p> XXX PRE> DowithResources gérera automatiquement l'attribution et la répartition correctement, et votre code aura moins de répétition (ce qui est une bonne chose). Toutefois: p> , deux points que j'espère être résolu dans Java 7. P> Vous pouvez trouver ce type de code tout au long du printemps, par exemple: p>
Merci, la chose du fonceur a l'air intéressant. De mauvais, il n'y a pas de sucre pour le simplifier.
Aussi - ne voulez-vous pas dire près () au lieu de disposer ()? Java a une interface closeable.
"Dispose" vient de sonner plus générique :-p. C'est juste pseudocode :-p
Il y a une alternative utilisant une enveloppe générique comme celle-ci: Remarque: la voie Java est celle que vous venez de décrire. Cet autre est juste pour "amusement" et expérimentation: p> Le _ code> est un wrapper générique et le
avec la fonction code> est une classe d'utilitaire définie ailleurs comme : P>
public void update( final int itemId, String newName ) {
final _<Connection> c = new _<Connection>();
with( factory, c, new Runnable() {
public void run(){
Item item = c._.query( itemId );
item.setName( newName );
c._.update( item );
}
});
}
Qu'est-ce que les traits de soulignement manifestent partout? Noms de variables temporaires?
Ce n'est pas Java (la langue) mais je l'enveloppe de classe générique que j'ai créée. Vous pouvez penser à cela comme un Pass Pass par référence i> Substitut. Il est défini comme suit: classe _
Désolé, je ne suis toujours pas sûr de ce que sont des traits de soulignement. Vous dites qu'ils ne font pas partie de la langue Java ???
@Drozzy: Non dans le sens int code> ou
pour code> sont. Le soulignement n'est qu'un autre nom de classe et un autre nom de champ. Je viens d'l'utiliser parce que le code a l'air plus propre. Voici une comparaison: avec un nom régulier: Pastebin.com/rqpttnpk à l'aide de Uderscore: Pastebin.com/tzur8b5c Diff: Pastebin. com / cjhr1gwe
Java 7 a introduit une nouvelle fonctionnalité pour résoudre ce problème: "Essayez avec les ressources"
http://docs.oracle.com/javas.oracle.com/javase/tutorial/essential/exceptions/tryresourceclose.html p>
FERMER LES RESSOURCES DIFFICILLENT UTILISER ESSAYER AVEC DES RESSOURCES P>
La syntaxe consiste à placer la ressource entre parenthèses après Le mot clé essaie: p> avant JAVA 7, vous pouvez utiliser un bloc enfin. p>
Essayez avec les ressources a été introduite dans Java 7. Avant que vous ayez dû utiliser des blocs TRY-enfin. Voir la documentation ici: https://docs.oracle.com/javase/tatutoriel /essential/Exceptions/ecteurResourceclose.html P>
Je ne connais pas grand chose à propos de
avec code> ou python, mais si c'est quelque chose comme ça comme c # 's
en utilisant code> Ceci a été répondu très récemment: Stackoverflow.com/Questtions/2943542/Utilisation-keword-in-java
+1 mais:
[const] code>
[final] code> existe également, donc
[with] code> devrait également avoir une étiquette. Je ne peux pas encore le créer.