可以在java中将对象声明为静态吗?

Rac*_*hra 1 java jdbc java-ee

public static Connection connect;
    public static ResultSet resultSet;
    static final String DATABASE_URL = "jdbc:mysql://localhost/java_dev";

    public ServerFunctions() {
        String Driver = "com.mysql.jdbc.Driver";            
        String DB_USERNAME = "lucky";
        String DB_PASSWORD = "lucky";

        try {
            Class.forName(Driver);
            connect = DriverManager.getConnection(DATABASE_URL,DB_USERNAME, DB_PASSWORD);
        } catch(Exception e) {
            System.out.println("Database Not Connected ! ");
        }
    }

    public static Boolean verificator(String username, String password) {
        try {
            PreparedStatement prepare = connect.prepareStatement(
                "Select * from users where username='?'&&password='?'");
Run Code Online (Sandbox Code Playgroud)

上面是我的代码片段.我声明ConnectionResultset对象静态,因此可以从静态验证器方法调用它们.同样,verificator方法被声明为static,因此可以通过使用className.verificator(param,param)从不同的类作为类变量调用它.

它在我单独测试类时编译并运行,但是每当从不同的类调用时,我就会在PerparedStatement行中得到NullPointerException错误.

有人可以帮助我为什么会发生这种情况?

谢谢

pca*_*cao 9

您说您将verificator方法声明为static,因此可以从其他类访问它,并且验证方法使用连接,这也是静态的.

问题是连接只在对象的构造函数中初始化,因此,如果从不调用构造函数,则connect将为null.

您需要在静态块中初始化connect变量,或者在使用它之前验证它是否为null.