![](/img/trans.png)
[英]Java 7 Try-With-Resources (AutoCloseable) Implementation
[英]Java try with resources and `AutoCloseable` interface
我正在尋找與 python 的with
語句等效的 Java,並且我閱讀了有關實現AutoCloseable
接口和使用資源的 try 的信息。
在 python 中,上下文管理器( with
語句)使用兩種方法: __enter__
和__exit__
,但在 Java 中,try with resources 塊僅使用close
,相當於__exit__
。
__enter__
方法是否有等效方法,以便在進入 try with resources 塊時自動執行某個方法,而不僅僅是在塊結束時?
等效的基本上是您在try
獲取AutoCloseable
實例時所調用的任何內容。 這可能是一個構造函數,如:
try (MyClass obj = new MyClass()) { …
具有這樣一個構造函數的類如下所示:
public class MyClass implements AutoCloseable {
public MyClass() {
// do "enter" things...
}
@Override
public void close() {
// close resources
}
}
根據您需要“輸入”執行的操作,您可能更喜歡類的靜態生產者,如下所示:
try (MyClass obj = MyClass.getInstance(someProperties)) { …
那么你的班級可能看起來像這樣:
public class MyClass implements AutoCloseable {
private MyClass() {
// instantiate members
}
public static MyClass getInstance(Properties config) {
// you could implement a singleton pattern or something instead, for example
MyClass obj = new MyClass();
// read properties...
// do "enter" things...
return obj;
}
@Override
public void close() {
// close resources
}
}
您甚至可以在try
生成AutoCloseable
時調用工廠或構建器模式。 這完全取決於您的設計以及您需要實例在“進入”時執行的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.