Tru*_*an1 4 java generics realm
我有一个泛型方法,并希望使用泛型类型检索对象.这是我的方法:
public static <T extends RealmObject & IndentifierModel> void storeNewData() {
...
T item = realm.where(Class<T>) // Not compiling (Expression not expected)
.equalTo("ID", data.get(i).getID())
.findFirst();
}
Run Code Online (Sandbox Code Playgroud)
以上不适用realm.where(Class<T>).如何将我的泛型类型传递给Realm?
Viv*_*ath 13
您必须提供通用参数,如下所示:
public static <T extends RealmObject & IndentifierModel> void storeNewData(Class<T> clazz) {
T item = realm.where(clazz)
.equalTo("ID", 123)
.findFirst();
}
Run Code Online (Sandbox Code Playgroud)
Class<T>是无效的,因为那就像说realm.where(Class<List<String>>)或realm.where(Class<String>).你需要的是一个实际的Class<T>例子.但你不能使用T.class或者因为T不可在运行时由于类型擦除.在运行时,该方法基本上需要一个Class<T>实例才能正常工作.既然你无法得到它T,那么你必须明确地提供一个类型的参数Class<T>.