2016-08-14 1 views
0

est- Un PrintWriter sans affectation à une variable se ferme-t-il après l'avoir utilisé?

new PrintWriter(ExampleStream).print("Just Something"); 

même que

PrintWriter pw = new PrintWriter(ExampleStream); 
pw.print("Just Something"); 
pw.close(); 

Il en va de la fin PrintWriter?

+0

Pourquoi pensez-vous que ce serait le cas? – Tunaki

+0

Peut-être parce AutoCloseable? Je ne suis pas vraiment sûr de ce que fait cette interface. – nickkoro

+2

Cette interface est utile pour l'instruction try-with-resources. Voir ici https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html – Tunaki

Répondre

1

n °

Et techniquement le terme anonyme en Java fait référence à la création d'une classe locale sans nom. Ce que vous avez fait est juste de créer une instance d'une classe sans l'assigner à une variable.

1

Non, les deux ne sont pas la même affaire

Dans le deuxième exemple de votre, question PrintWritter sera immédiatement se rapprocher pw.close moment() se sont exécutées.

Dans le premier cas de votre question, l'imprimeur ne sera pas fermé immédiatement. Après avoir appelé -> new PrintWriter (ExampleStream) .print() puisque vous n'avez aucune référence à son objet, vous ne pouvez donc plus utiliser ce même objet, ce qui signifie qu'il est éligible pour être supprimé par garbage collector. Comme nous ne pouvons pas dire quand le garbage collector fonctionnera c'est pourquoi il n'y a aucune certitude sur quand cet objet sera enlevé. une chose plus importante à garder à l'esprit est que même si cet objet peut être supprimé par le garbage collector mais que ce processus n'est pas le même que pw.close()