如何使用class作为参数(对于Realm,对于Retrofit等)?

时间:2017-08-06 19:49:02

标签: java

这是标准领域查询:

private void doQuery() {
    RealmResults<User> result = realm.where(User.class)
            .equalTo("name", "John")
            .or()
            .equalTo("name", "Peter")
            .findAll();
}

我想将此作为带参数的函数使用,意思是用户&amp; User.class 不会被硬编码,它将作为参数提供。像这样的东西,但这是错的。请告知如何做到这一点。

编辑:似乎“User.class”的问题已解决,但“用户”仍然存在。

private void doQuery(Class<? extends RealmObject> realmClass) {
    RealmResults<realmObject> result = realm.where(realmClass)
            .equalTo("name", "John")
            .or()
            .equalTo("name", "Peter")
            .findAll();
}

编辑:当你给我减去时,请好好解释原因。

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要使用泛型来定义输入,如下所示:

private <T extends RealmObject> RealmResults<T> doQuery(Class<T> realmClass) {
    RealmResults<T> results = realm.where(realmClass)
            .equalTo("name", "John")
            .or()
            .equalTo("name", "Peter")
            .findAll();
    return results;
}