gpt4 book ai didi

Java重写静态方法

转载 作者:搜寻专家 更新时间:2023-11-01 03:24:59 24 4
gpt4 key购买 nike

我发现自己需要覆盖静态方法,只是因为它最有意义,但我也知道这是不可能的。

父类(super class),Entity.java:

abstract public class Entity<T> {
public Entity() {
//set up database connection
}

abstract public static Map<Object, T> getAll();

abstract public void insert();

abstract public void update();

protected void getData(final String query) {
//get data via database
}

protected void executeQuery(final String query) {
//execute sql query on database
}
}

许多具体实现之一,Account.java:

public class Account extends Entity<Account> {
private final static String ALL_QUERY = "SELECT * FROM accounts";
private final static String INSERT_QUERY = "INSERT INTO accounts (username, password) VALUES(?, ?)";
private final static String UPDATE_QUERY = "UPDATE accounts SET password=? WHERE username=?";

private String username;
private String password;

public Account(final String username, final String password) {
this.username = username;
this.password = password;
}

public String getUsername() {
return username;
}

public void setUsername(final String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(final String password) {
this.password = password;
}

@Override
public static Map<Object, Account> getAll() {
//return a map using the ALL_QUERY string, calls getData(string);
}

@Override
public void insert() {
//insert this using INSERT_QUERY, calls executeQuery(string);
}

@Override
public void update() {
//update this using UPDATE_QUERY, calls executeQuery(string);
}
}

我没有深入解释代码,但也将不胜感激任何关于它的一般反馈,我希望这些评论足够解释。

所以基本上我认为我们都同意使用 Account.getAll()new Account().getAll() 更有意义(如果我要介绍一个它的虚拟语法)。但是我确实想让它扩展 Entity 类,目前它只是为了方便,但稍后我可能不得不使用 Entity 的集合/列表/多重集并执行对所有更新执行 update() 操作,例如,如果我要构建一些每分钟执行所有更新的队列。

那么好,有没有办法正确构造getAll()

问候。

最佳答案

您可以为所有元素的操作设置单独的类:

abstract public class Collection<T extends Entity<T>> {
abstract public static List<T> getAll();
public void printAll() {
// Print all entries of List obtained from getAll()
}
}

您可以用作:

public class Accounts extends Collection<Account> {
@Override
public List<Account> getAll() {
//return a list using the ALL_QUERY string, calls getData(string);
}
}

关于Java重写静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16529991/

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