2017-08-06 77 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