是否将 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 的新实例分配给先前创建的实例,关闭先前的实例?的主要内容,如果未能解决你的问题,请参考以下文章
如何将指针分配给函数中的新对象,而该对象在退出后不会消失[重复]