我有一个 Person 类,它扩展了我的 Record 类,我想将数据库表名、列和列类型定义为 Person 类中的静态变量。我想做类似以下的事情,但我做不到,因为我不能在不在方法中时修改对象(我认为?这里是 java noob)。
class Person extends Record{
protected static final String dbTable = "people";
protected static LinkedHashMap<String, String> dbColumns = new LinkedHashMap<String, String>();
dbColumns.put("id","integer");
dbColumns.put("name", "text");
}
我可以执行以下操作,但它看起来很乱而且可读性不强,特别是如果我的表有几列
class Person extends Record{
protected static final String dbTable = "people";
protected static final String[] dbColumns= {"id","name"};
protected static final String[] dbColumnTypes= {"integer","text"};
}
我不想在构造函数中定义这些,因为我想要父类(记录)中的静态方法,我可以执行以下操作来获取人员记录列表
List<Person> people = Person.getAll();
我最初的想法是在我的 Record 类中创建以下抽象方法,并且它们在 Person 类中的实现将返回适当的静态变量。
public abstract String getTableName();
public abstract String[] getColumnNames();
public abstract String[] getColumnTypes();
但我不能这样做,因为我的静态方法 getAll() 不能引用非静态方法。我如何让我的静态方法 getAll() 知道这些静态变量存在于扩展类中并且可以使用它们?
我知道有一个正确的方法可以做到这一点,我只是想不通。