2017-08-06 76 views
-2

这是标准的境界查询:如何使用class作为参数(用于Realm,用于Retrofit等)?

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

我想用这个与参数的功能,这意味着用户& 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

您需要使用泛型定义输入,就像这样:

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; 
} 
+0

谢谢,完美! – Michalsx