Здесь есть несколько хороших ответов, но после некоторого сна я решил вместо этого переместить TypeRef в качестве фактического параметра.
private <T extends TypeInterface> List<DBObject> getDataUsingJsonPath(String path, TypeRef<List<T>> type) {
Затем я могу перебрать результат, как и ожидалось:
List<T> items = JsonPath.using(configuration).parse(responseString).read(path, type);
for(T item : items) {
// do generic TypeInterface stuff here
Я не знаю, является ли это лучшим, наиболее правильным, «универсальным» способом сделать это, но пока все хорошо, и это в основном имеет смысл при чтении кода, который я думаю.