gpt4 book ai didi

Java:如何在抽象类中引用子类的静态变量?

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:49 25 4
gpt4 key购买 nike

我明白了,感谢this question ,抽象类中声明的静态字段的值在所有子类中都是相同的。

上述问题的解决方案是在每个子类中声明一个静态字段,并在抽象类中声明一个必须由每个子类实现的抽象“getter”实例方法。

但是我的抽象类中有一个静态方法,我需要引用子类的静态字段。我不能这样做,因为 getter 是一个实例方法。

这里最好的解决方案是什么?我不想在每个子类中放置几乎相同的 getAll 实例。

public abstract class AbstractModel {

public abstract String getTableName();

public static ResultSet getAll() {

Statement stmt = Database.get().conn.createStatement();

// Error below: Cannot use "this" in static context.
String query = "SELECT * FROM `" + this.getTableName() + "`";

return stmt.executeQuery(query);
}

}

public class Api extends AbstractModel {

protected static final String TABLE_NAME = "apis";

@Override
public String getTableName() {
return TABLE_NAME;
}

}

最佳答案

我能够以这种方式编写代码,以尽量减少重复。它还消除了对 getter 的需要。

public abstract class AbstractModel {

public static ResultSet getAllFromTable(String tableName) {

Statement stmt = Database.get().conn.createStatement();

String query = "SELECT * FROM `" + tableName + "`";

return stmt.executeQuery(query);
}

}

public class Api extends AbstractModel {

protected static final String TABLE_NAME = "apis";

public static ResultSet getAll() {
return getAllFromTable(TABLE_NAME);
}

}

关于Java:如何在抽象类中引用子类的静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55071196/

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