@SuppressWarnings("unchecked") public static <T extends Model> List<T> processCursor( Class<? extends Model> type, Cursor cursor) { final List<T> entities = new ArrayList<T>(); try { Constructor<?> entityConstructor = type.getConstructor(); if (cursor.moveToFirst()) { do { Model entity = Cache.getEntity(type, cursor.getLong(cursor.getColumnIndex("Id"))); if (entity == null) { entity = (T) entityConstructor.newInstance(); } entity.loadFromCursor(cursor); entities.add((T) entity); } while (cursor.moveToNext()); } } catch (Exception e) { Log.e("Failed to process cursor.", e); } return entities; }