我的目标是将 try-with-resource 构造与类的单个实例(即处理连接池的单例)一起使用。我需要这个来确保连接池在一切结束时关闭,然后我想使用 try-with-resource。例如。
public class MyHandler implements java.io.Closeable{
public static ConnectionPool pool;
//Init the connection pool
public MyHandler(){
pool = ...;
}
@Override
public void close() {
pool().close();
}
}
可能的
main
是:public static void main(String [] args){
try(MyHandler h = new MyHandler){
//execute my code
// somewhere I do MyHandler.pool.something();
}
}
如何确保 MyHandler 用作单例?
最佳答案
我见过的确保类是单例的常用方法是将其构造函数设置为私有(private),然后使用公共(public)静态 getInstance 方法来检索单例。
public class MyHandler implements java.io.Closeable {
private static MyHandler singleton = new MyHandler();
private MyHandler() {}
public static MyHandler getInstance() {
return singleton;
}
@Override
public void close() {
//close stuff
}
}
try(MyHandler h = MyHandler.getInstance()){ }
Spring Framework 也有一个很好的系统来定义单例。
关于java - 在 java 中定义一个单例来尝试资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16002208/