0

例如,如果一个资源的实例需要在不同的对象中传递怎么办?

由于 try-with-resource 的设计(正确地)旨在限制其成员的范围,那么有人将如何处理这种设计问题?

还在使用 try-with-resources 并不断地传递实例吗?使用常规的 try-catch-finally 块并将成员保持在其范围之外?

4

3 回答 3

0

正如雷所说,这个问题有点抽象。我想到了两个场景:

  • 对资源的本地引用:使用 try-with-resources 当然,您可以将资源传递给 try-block 内的其他方法。
  • 引用资源的成员变量:考虑实现 AutoCloseable,以便您的类本身的实例可以在 try-with-resources 块中使用。
于 2014-08-22T08:52:30.543 回答
0

来自 DOC :“资源是程序完成后必须关闭的对象。try-with-resources 语句确保每个资源在语句结束时关闭。任何实现的对象,java.lang.AutoCloseable包括所有实现java.io.Closeable, 的对象可以用作资源。”

如果您想要一个始终需要资源的设计,请不要选择try-with-resources,而是将资源保留在外部并在内部简单地使用它try-catch。但是如果你使用这个策略,请确保你做了必要的CLEANUP

此外,如果您使用传统的,您可能需要更频繁地编写嵌套的 try-catch 块try-catch。(关闭资源也会抛出Exception

于 2014-08-22T08:42:29.373 回答
0

不应始终使用资源尝试,并且必须在创建可关闭对象时使用。即使你有一个传入的对象,这意味着调用者必须有一个 try-catch 块,它在其中调用你的方法。然后外部调用者的 try-catch 将关闭该对象。

于 2014-08-22T08:53:50.373 回答