没有分配给变量的 PrintWriter 在使用后会关闭吗?
Will a PrintWriter without assignment to a variable close after using?
是
new PrintWriter(ExampleStream).print("Just Something");
同
PrintWriter pw = new PrintWriter(ExampleStream);
pw.print("Just Something");
pw.close();
那么PrintWriter会不会关闭?
没有
从技术上讲,Java 中的术语匿名指的是创建一个没有名字的本地 class。您所做的只是创建一个 class 的实例,而没有将其分配给变量。
不对,他们不是同一种情况
在你的第二个例子中,问题 PrintWritter will get close immediately on the moment pw.close() will get executed.而
在你的第一种情况下,printwriter 不会立即关闭。调用后 --> new PrintWriter(ExampleStream).print()
由于您没有对其对象的任何引用,因此您不能再次使用同一个对象,这意味着它有资格被垃圾收集器删除。因为我们不能说垃圾收集器什么时候会 运行 这就是为什么不能确定什么时候会删除这个对象。要记住的另一件重要的事情是,即使垃圾收集器可能会删除此对象,但该过程与 pw.close()
不同
是
new PrintWriter(ExampleStream).print("Just Something");
同
PrintWriter pw = new PrintWriter(ExampleStream);
pw.print("Just Something");
pw.close();
那么PrintWriter会不会关闭?
没有
从技术上讲,Java 中的术语匿名指的是创建一个没有名字的本地 class。您所做的只是创建一个 class 的实例,而没有将其分配给变量。
不对,他们不是同一种情况
在你的第二个例子中,问题 PrintWritter will get close immediately on the moment pw.close() will get executed.而
在你的第一种情况下,printwriter 不会立即关闭。调用后 --> new PrintWriter(ExampleStream).print() 由于您没有对其对象的任何引用,因此您不能再次使用同一个对象,这意味着它有资格被垃圾收集器删除。因为我们不能说垃圾收集器什么时候会 运行 这就是为什么不能确定什么时候会删除这个对象。要记住的另一件重要的事情是,即使垃圾收集器可能会删除此对象,但该过程与 pw.close()
不同