返回空值的单例java类

返回空值的单例java类,java,singleton,Java,Singleton,我创建了一个返回DB连接对象的java类。但它在调用方方法处返回空值。当我在调试模式下运行代码时,它不会转到方法本身。我需要建议 package com.cisco.installbase.hiveconnector; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Connection; public class CreateConnection { private stat

我创建了一个返回DB连接对象的java类。但它在调用方方法处返回空值。当我在调试模式下运行代码时,它不会转到方法本身。我需要建议

package com.cisco.installbase.hiveconnector;

import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;

public class CreateConnection {

    private static Connection instance = null;
    static final String drivername = "org.apache.hive.jdbc.HiveDriver";

    private CreateConnection() {

        try {
            Class.forName(drivername);
            // instance =
            // DriverManager.getConnection("jdbc:hive2://hddev-c01-edge-01:20000/",
            // "phodisvc", "B1GD4T4dev");
            // for hive 1 use this ------> instance =
            // DriverManager.getConnection("thrift://hddev-c01-edge-02:9083");
            instance = DriverManager.getConnection("thrift://hddev-c01-edge-02:9083");
            System.out.println("get instance"+instance);
            Constants.setFlag(true);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            Constants.setFlag(false);
        } catch (SQLException e) {
            e.printStackTrace();
            Constants.setFlag(false);
        }
    }

    public static Connection getInstance() {
        Constants.setFlag(true);
        return instance;
    }
}
下面是调用getInstance()方法的代码


你对西格尔顿的实施是错误的。 你从不调用构造函数。这是实现单例的正确方法

public static Connection getInstance() {
        if (instance==null){
            instance = new CreateConnection();
        }
        Constants.setFlag(true);
        return instance;
    }

您从未调用构造函数
CreateConnection()
(此外,它无论如何都不应该是构造函数,而是返回连接的实用方法)。

您的singleton模式实现是错误的,它不是真正的singleton模式,因为您有一个
CreateConnection
类(您从未真正创建或关心过它的实例),但在
getInstance()
中返回一个
连接
对象。。。
public static Connection getInstance() {
        if (instance==null){
            instance = new CreateConnection();
        }
        Constants.setFlag(true);
        return instance;
    }
 private static Connection instance = null;
    static final String drivername = "org.apache.hive.jdbc.HiveDriver";



    public static Connection getInstance() {
        if(instance==null){
        try {
            Class.forName(drivername);
            instance = DriverManager.getConnection("thrift://hddev-c01-edge-02:9083");
            Constants.setFlag(true);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            Constants.setFlag(false);
        } catch (SQLException e) {
            e.printStackTrace();
            Constants.setFlag(false);
        }       
    }
    return instance;
    }