Невозможно создать универсальный класс типа Map.Entry - PullRequest
0 голосов
/ 23 января 2019

У меня есть карта, и я хочу сделать реализацию Collector, которая будет брать из карты, набора записей и устанавливать ключи / значения в другом пользовательском POJO. Я подумал, что было бы просто сделать общий класс типа Map.Entry, но это не компилируется. Как я могу это сделать?

Я мог бы переосмыслить и спроектировать решение по-другому, но я хотел бы узнать, как сделать универсальный класс типа внутренним интерфейсом другого класса, как в этом примере.

public class TestCollectorImpl<Map.Entry> implements Collector<Map.Entry, CustomDataType, CustomDataType>{}

Похоже, я не могу использовать . в <>, и это не компилируется.

1 Ответ

0 голосов
/ 23 января 2019

Я думаю, это то, что вы хотите:

public class TestCollectorImpl<K, V> implements Collector<Map.Entry<K, V>, Foo, Bar>

Имейте в виду, что TestCollectorImpl<Map.Entry> пытается определить новый параметр универсального типа с именем Map.Entry (который является недопустимым идентификатором из-за точки). Вы также используете raw type из Map.Entry здесь: Collector<Map.Entry .... Вы не хотите делать ни то, ни другое.

То, что вы хотите, - это два параметра универсального типа, которые будут передаваться для использования в качестве типов ключа и значения записи.

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