J'ai ci-dessous l'extrait de code.
Map<String, Object> globalMap = new HashMap<String,Object>(); File talendLogFile = new File("C:\\Softwares\\logFiles\\error.log"); Writer talendLogFileWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(talendLogFile, true))); globalMap.put("Logger", talendLogFileWriter); ((BufferedWriter) globalMap.get("Logger")).write("I'm Writing"); ((BufferedWriter) globalMap.get("Logger")).close();
5 Réponses :
trivialement, oui: Si vous voulez dire, utilisez un appel de méthode unique pour faire les deux choses, non si vous définissez une nouvelle méthode pour le faire. P> P>
Comment est-ce un célibataire?
Comment ça ne va pas une seule ligne?
Parce que tout ce que vous avez fait est de supprimer une nouvelle ligne. Tout formateur le convertira en deux lignes
Exactement. Supprimer une nouvelle ligne en fait une seule ligne. Je ne dis pas que c'est utile, mais c'est littéralement ce que vous avez demandé. Vouliez-vous demander une seule déclaration i> ou une seule méthode i>? Les programmeurs doivent être précis, les ordinateurs ne subissent pas de bien l'ambiguïté. (Je ne peux pas non plus deviner votre intention puisque laissant un fichier fermé sur une carte n'est pas particulièrement utile, non plus.)
Vous pouvez essayer d'utiliser essayer avec des ressources code>. Cette moyenne des ressources sera automatiquement fermée après
essayer bloquer code> sera effectuée. Vous pouvez lire plus ici https://www.baeldung.com/java-try-vith -Resources
Le plus proche que vous puissiez obtenir, c'est cela, mais comme déjà mentionné par de nombreux autres, il n'est pas nécessaire de. Il suffit de compliquer les choses:
En plus d'utiliser des ressources traitantes, la réponse réelle est la suivante: faire Vous voyez, vous mettez un écrivain dans une carte globale. Cela rend la mise à la disposition du monde "entier" qui a accès à cette carte. Et ensuite, Certains em> ont l'intention de fermer l'auteur que vous avez ajouté à cette carte. p>
Mais il semble que l'écrivain lui-même est rester em> sur la carte. Donc, d'autres Code peuvent remarquer: la carte dispose d'un enregistreur / écrivain ... mais comment l'autre code est-il censé savoir si cet enregistreur / écrivain est toujours ouvert ou a été fermé? P>
Avoir un enregistreur / écrivain dans cette carte globale, mais il ne peut pas être utilisé à l'échelle mondiale, c'est une contradiction en soi! P>
En d'autres termes: conceptuellement, ce que vous faites semble tromper. Soit vous ajoutez un tel enregistreur / écrivain à une carte globale, puis Tout le code STRY> qui a accès à cette carte devrait pouvoir utiliser cet enregistreur / écrivain (sans inquiétant "est-il toujours ouvert?"). Ou, vous faites
Utiliser Essayez avec des ressources qui ferme automatiquement la ressource sans avoir besoin de le fermer explicitement. P>
Y a-t-il une façon que je puisse effectuer les deux fonctionnalités qui se produisent dans les deux dernières lignes dans une seule ligne de code? I> Pourquoi?!?! B> Que fait tout en une seule ligne? Eh bien, autrement que de le faire plus difficile b> pour comprendre, déboguer et entretenir ...
@Andrewhenle La vraie partie étrange ici est: pourquoi mettre quelque chose dans la carte globale lorsque vous gardez-le là-bas, mais dans un état qui le rend inutilisable pour Autres i> ?!
@Ghostcat aussi. Les «lignes de code moins implicites sont meilleures et une ligne de code est la meilleure!» Le principe de la question est si mal guidé que je n'avais même pas atteint les détails de ce que le code est censé faire.