如何在方法中引用抽象类的方法

时间:2014-08-15 06:43:38

标签: java

请考虑以下代码:

public Record getRecordByPk(String pkValue) {
        Record record = null;

        Result result = database.query(tableName, recordPkColumn, pkey);

Record是一个抽象类,其方法为getTableNamegetPkColumnName。还有其他类扩展Record,这些其他类是真正返回的。 如果不允许初始化抽象类,我如何引用这些方法并使用它们而不是tableNamerecordPkColumn

我应该使用泛型吗?如果是这样,那么我会这样做:

public G getRecordByPk(String pkValue, G recordInstance) {

但我不喜欢像recordInstance这样的东西,所以我可以参考这些方法。所以我该怎么做?或者我在做什么本来就是错的?

背景

我在android中编写一个简单的数据库应用程序。但我认为这个问题在java中是通用的,所以我之前没有添加它。

我在创建DatabaseManager时遵循了this教程,但我的应用程序有更多的表,所以我挑战自己编写一个可以处理所有表的通用DatabaseManager。我使所有这些表继承自Record抽象类,因此我可以使我的DatabaseManager通用。然后我使用DatabaseManager中的Record进行查询。

2 个答案:

答案 0 :(得分:0)

恕我直言,Record类将表名和列名作为公共方法返回有点奇怪。我要么使用对象工厂以防需要灵活性,要么使用简单的硬编码load()方法,以防表名称可以硬编码。

答案 1 :(得分:0)

所以问题是:

如果不允许初始化抽象类,我如何引用这些方法并使用它们而不是tableNamerecordPkColumn

答案是:

你不能在没有物体实例的情况下调用物体的方法,就像在现实生活中一样,如果你没有车,就不能驾驶汽车。 - JB Nizet