继承 - 从父类返回扩展类

时间:2018-01-02 12:03:02

标签: java android

我想为数据库访问创建一个名为DataModel的超类。我还有一个带有泛型方法的SQLiteOpenHelper。我的问题是转换父类的结果类型。我将用通用代码解释。在父类中使用all()方法:

public class DataModel {
    public static ArrayList<DataModel> all(){
        ArrayList<DataModel> datos = new ArrayList<DataModel>();
        Map<String, String> columns = DataModel.getColumns();
        Map<String, Object> columnData = LocalStorageServices.DatabaseService().getAllMatchesFromTable(DataModel.getTableName(), columns);
        for (Map.Entry<String, Object> entry : columnData.entrySet()) {
            DataModel auxM = new DataModel(columns);
        }
    return datos;
    }
}

我还有一个扩展课程:

public class User extends DataModel {
    protected String table = "testing";
}

我需要实现什么?获取子实例列表,以获得子数据和具体方法。我的意思是,我想调用ArrayList<User> appUsers = User.all();,但我不能,因为DataModel.all()返回一个DataModel ArrayList(目前我必须做ArrayList<DataModel> appUsers = User.all();)。

这里的问题是在不知道具体孩子的情况下转换孩子的拼写错误。明天我可以创建一个新的Entry类,Post类或我想要创建的任何模型。

1 个答案:

答案 0 :(得分:1)

你可以把它变成通用的,例如。

public class DataModel<T> {
        public ArrayList<T> all(){
            // do generic stuff
            return datos;
        }
    }

它必须是静态的吗?如果是,那么您需要使用

public static <T> ArrayList<T> all() { ... }

这样您的User课程就像这样

public class User extends DataModel<User> {...}

现在可以使用

ArrayList<User> appUsers = User.all();