继承 - 从父类返回扩展类

问题描述 投票:1回答:1

我想为数据库访问创建一个名为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类或我想要创建的任何模型。

java android
1个回答
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();
© www.soinside.com 2019 - 2024. All rights reserved.