gpt4 book ai didi

java - Java 中可以将对象声明为静态的吗?

转载 作者:行者123 更新时间:2023-11-29 09:39:44 26 4
gpt4 key购买 nike

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='?'");

以上是我的代码片段。我将 ConnectionResultset 对象声明为静态的,这样它们就可以从静态 validator 方法中调用。 validator 方法也被声明为静态的,这样它就可以从不同的类作为类变量调用,只需使用 className.verificator(param, param)。

当我单独测试该类时,它会编译并运行,但每当从不同的类进行调用时,我都会在 PerparedStatement 行收到 NullPointerException 错误。

有人能帮我看看为什么会这样吗?

谢谢

最佳答案

你说你把 validator 方法声明为静态的,所以它可以被其他类访问, validator 方法正在使用连接,它也是静态的。

问题在于连接仅在对象的构造函数中初始化,因此,如果从未调用构造函数,connect 将为 null。

您需要在静态 block 中初始化连接变量,或者在使用前验证它是否为空。

关于java - Java 中可以将对象声明为静态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com