我的目标是将 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/

10-10 13:43