是否将 Closeable 的新实例分配给先前创建的实例,关闭先前的实例?

Posted

技术标签:

【中文标题】是否将 Closeable 的新实例分配给先前创建的实例,关闭先前的实例?【英文标题】:Is allocating new instance of Closeable to previously created instance, closing previous? 【发布时间】:2022-01-23 14:50:17 【问题描述】:

例如Scanner类,它实现了Closeable接口:

Scanner sc = new Scanner(...);
sc.//do smthing
sc = new Scanner(...); <- is previous Scanner closed? Does it create memory leak?
sc.//do smthing
sc.close();

【问题讨论】:

【参考方案1】:

不,除非您明确调用 sc.close(),或将其限定在 try-with-resources block 中,否则无法保证它会被关闭。有些类可能有终结器或关联的Cleaner,但这些非常不可靠(例如,您永远不知道它们何时或什至会被调用)。

【讨论】:

以上是关于是否将 Closeable 的新实例分配给先前创建的实例,关闭先前的实例?的主要内容,如果未能解决你的问题,请参考以下文章

如何将二维数组的一维分配给VBA中的新一维数组

malloc 是不是创建类的新实例? [复制]

如何将指针分配给函数中的新对象,而该对象在退出后不会消失[重复]

将系列分配给dataframe列时的新null

在 Amazon EC2 上,是不是可以将密钥对重新分配给已运行的实例?

将分类术语分配给视图实例