具有引用类型的变量仅包含对基础值的引用。你可以把它想象成一个指针。在方法之间传递引用总是只传递一个引用。
因此,回答您的问题,您的信息流已正确关闭。
新实例仅由...创建 new (*)。如果你没有看到 new 在那里,没有创建新实例。
new
因此,返回不会创建新实例。如果在“做一些事情”中抛出异常没有任何反应 getStream ,你正在以一种可能的方式关闭它。
getStream
更好的方法是使用try-with-resources,它可以更彻底地保留异常。
(*)好的,是的,有些特定的情况并不完全正确,例如字符串连接。字符串连接和自动装箱。字符串连接,自动装箱和数组声明。我会再次进来。
但实际上,缺乏 new 语法糖:某处,a new 被调用。