Как получить тип универсального интерфейса в Java - PullRequest
0 голосов
/ 09 октября 2018

У меня есть класс Bucket, который передается как универсальный тип в интерфейсе Comparator.Я работаю с GSON, чтобы зарегистрировать адаптер типа для этого типа.

Функция typeadapter имеет подпись

public GsonBuilder registerTypeAdapter(Type type, Object typeAdapter)

Я хочу передать первый аргумент в качестве объекта типа

java.util.Comparator<org.elasticsearch.search.aggregations.bucket.terms.Terms$Bucket>

Я попытался Comparator<Terms.Bucket>.class, что вызывает синтаксическую ошибку.Как правильно это сделать?

1 Ответ

0 голосов
/ 09 октября 2018

Обобщения используются только для обеспечения безопасности во время компиляции, затем они стираются (они не существуют во время выполнения).Так что написать что-то подобное Comparator<Terms.Bucket>.class невозможно.Вам нужно создать явный класс:

public class BucketComparator implements Comparator<Terms.Bucket>
{
    ...
}

После этого вы можете передать тип следующим образом: BucketComparator.class

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...