java - 应以静态方式访问 DBConnection 类型的静态方法 getDBConnection()

标签 java

我有一个如下所示的单例类,用于访问数据库连接

public class DBConnection {
    private static volatile DBConnection instance;
    private static DataSource dataSource;
    private DBConnection(){ 
    }
    public static synchronized DBConnection getInstance() {
        if (instance == null) {
            instance = new DBConnection();
        }
        return instance;
    }
    static {
        try {
            dataSource = (DataSource) new InitialContext()
                    .lookup("java:comp/env/jdbc/MySQLDataSource");
        } catch (NamingException e) {
            e.printStackTrace();
            try {
                throw new Exception("'jndifordbconc' not found in JNDI", e);
            } catch (Exception e1) {
                logger.error("Error description", e);
            }
        }
    }

    public static Connection getDBConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
            logger.error("Error description", e);
            return null;
        }

    }
}

当我尝试以这种方式访问​​ DBConnection

独立类

我收到黄色警告

  public String fetchGlobalIndicesData(@QueryParam("region_name") String region_name )
    {
       Connection dbConnection = null;
        String selectsql = "";

        try
        {

            dbConnection = DBConnection.getInstance().getDBConnection();
            selectpstmt = dbConnection.prepareStatement(selectsql);
            selectpstmt.setString(1, region_name);
            selectRset = selectpstmt.executeQuery();
        }
        catch (Exception e)
        {
            logger.error("Error description",e);
        }

    }

Eclipse IDE 向我发出黄色警告

The static method getDBConnection() from the type DBConnection should be accessed in a static way

你能告诉我这样做的正确方法是什么吗?

我将代码修改为

public static Connection getDBConnection() {
    try {
        return getInstance().dataSource.getConnection();
    } catch (SQLException e) {
        e.printStackTrace();
        logger.error("Error description", e);
        return null;
    }

}

最佳答案

由于它是静态的,因此您应该直接在类上调用该方法,而不是在类的实例上调用:

DBConnection.getDBConnection()

尽管有可能,但在实例上调用该方法没有任何意义。

关于java - 应以静态方式访问 DBConnection 类型的静态方法 getDBConnection(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34016414/

相关文章:

java - Jenkins 自动部署tomcat 7

java - 简化 ifPresentOrElse 链

java - 撤消 java mkdirs() 的效果

java - 如何让 XSLT 在输出数值运算结果时停止使用科学记数法?

java - 如何使用 ProgressMonitorInputStream

java - 重试失败的文件上传到 AWS S3

Java 正则表达式元字符在拆分时返回额外的空间

java - 客户端和服务器之间传递json数据

java - 将 enum 分成 2 个不同的 HashMap

java - Java算子的疑惑