gpt4 book ai didi

java - 抽象方法中的参数 (Java 7)

转载 作者:行者123 更新时间:2023-11-30 06:30:25 26 4
gpt4 key购买 nike

我有一些测试JavaFX应用程序,代码有很多关于数据库的类似部分。举个例子:

Class.forName("com.mysql.jdbc.Driver");
try (Connection connection = DriverManager.getConnection(Person.getURL(), Person.getDBUSERNAME(), Person.getDBPASSWORD())) {
String sqlQuery = "INSERT INTO users (users.user_name," +
"users.current_balance) VALUES (?, ?)";

PreparedStatement preparedStatement = connection.prepareStatement(sqlQuery);
preparedStatement.setString(1, newUserName);
preparedStatement.setBigDecimal(2, new BigDecimal(newBalance));

preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}

所以我想创建一个带有抽象方法updateDatabaseInfo的抽象类SqlWorkClass。

public abstract class SqlWorkClass {
public abstract void updateDatabaseInfo() throws ClassNotFoundException;

还有继承SqlWorkClass的3个类——DatabaseInsertClass、DatabaseUpdateClass和DatabaseSelectClass。但问题是我必须为每个类的 updateDatabaseInfo 方法使用不同的参数。

public class DatabaseInsertClass extends SqlWorkClass {

@Override
public void updateDatabaseInfo(String newUserName, String newBalance) throws ClassNotFoundException{
//some actions with code above
}

public class DatabaseUpdateClass extends SqlWorkClass {

@Override
public void updateDatabaseInfo(String param1, String param2, String param3) throws ClassNotFoundException{
//some actions with code above
}

public class DatabaseSelectClass extends SqlWorkClass {

@Override
public void updateDatabaseInfo(String param1) throws ClassNotFoundException{
//some actions with code above
}

显然我做不到。那么我该如何解决这个问题呢?也许我应该使用接口(interface)或其他东西而不是抽象类?希望各位大佬指教!附注我使用 Java 7。

最佳答案

您可以在 DatabaseInsertClassDatabaseUpdateClassDatabaseSelectClass 的构造函数中传递这些参数。这样您就可以使用不带参数的 updateDatabaseInfo()
对于每个操作,您都必须创建类的新实例。

关于java - 抽象方法中的参数 (Java 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46278816/

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