2016-08-14 20 views
0

使用后没有分配给变量的PrintWriter会关闭吗?

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

一样

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

于是将PrintWriter的接近?

+0

为什么你认为它会呢? – Tunaki

+0

可能是因为AutoCloseable?我不太确定这个接口是干什么的。 – nickkoro

+2

该接口对try-with-resources语句很有用。看到这里https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html – Tunaki

回答

1

从技术上讲,Java中的匿名一词指的是创建一个没有名称的本地类。你所做的只是创建一个类的实例,而不将它分配给一个变量。

1

不,他们都是不一样的情况下

在你的第二个例子,问题PrintWritter将得到立即关闭的那一刻pw.close()将得到执行。而

在您的问题的第一个例子中,printwriter不会立即关闭。在调用 - >新的PrintWriter(ExampleStream).print() 之后,因为您没有任何对其对象的引用,因此您不能再次使用同一个对象,这意味着它有资格被垃圾收集器删除。因为我们不能说什么时候垃圾回收器会运行,这就是为什么当这个对象被删除时没有把握。要记住的另一个重要的事情是,尽管这个对象可能被垃圾收集器清除,但是这个过程与pw.close()不一样(

相关问题