Замена управляющих символов Unicode

Мне нужно заменить все специальные управляющие символы в строке в Java.

Я хочу спросить API карт Google v3, и Похоже, Google не нравится эти символы.

Пример: http://www.google.com/maps/api/geocode/json?sensor=false&address=NEW%20YORK%C2%8F

Этот URL содержит этот символ: http://www.fileformat.info/info/unicode/char/008f/index.htm

Поэтому я получаю некоторые данные, и мне нужно геокодировать эти данные. Я знаю, что какой-то персонаж не пройдет геокодирование, но я не знаю точного списка.

 public class LinkedHashMap
       extends HashMap
       implements Map
   {...

почему избыточный « реализует Map » (поскольку HashMap уже реализует Map )? Я не могу представить, что это опечатка ...

Спасибо.

9
задан Yash 27 August 2019 в 14:15
поделиться

6 ответов

Я полагаю, это способ сказать

Независимо от того, какие интерфейсы реализует HashMap (сейчас или в будущем), этот класс должен реализовать интерфейс Map.

Если кто-то, ответственный за HashMap, решит, что он больше не должен реализовывать интерфейс Map, компилятор предупредит сопровождающего LinkedHashMap, что он больше не реализует интерфейс Map так, как он задумал.

Конечно, это глупо в данном конкретном случае (HashMap, очевидно, всегда будет Map), но подобные ситуации могут извлечь пользу из такого соглашения (и привели к его появлению).

12
ответ дан 4 December 2019 в 12:58
поделиться

Это древний код. До некоторой степени JDK 1.1.6 или около того, Javadoc не отображал унаследованные интерфейсы, поэтому было обычным или действительно необходимым повторять их в производных классах, чтобы Javadoc работал правильно. Они были представлены в JDK 1.2, но были доступны задолго до этого как надстройка для 1.1.x.

3
ответ дан 4 December 2019 в 12:58
поделиться

Это похоже на соглашение о стиле / коде: LinkedHashSet имеет аналогичную подпись. Возможно, это просто для того, чтобы подчеркнуть использование интерфейса. Сравните с C ++, где рекомендуется писать «виртуальные» со всеми виртуальными функциями, даже если они уже неявно виртуальны.

1
ответ дан 4 December 2019 в 12:58
поделиться

Возможно, это ошибка кодировщика.

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

0
ответ дан 4 December 2019 в 12:58
поделиться

Это проясняет намерение, так что становится очевидным, что это предназначено для реализации карты с конкретным поведение, которое случайно создается расширением HashMap, что позволяет использовать его в некоторых местах вместо HashMap.

0
ответ дан 4 December 2019 в 12:58
поделиться

Мое предположение заключается в том, чтобы позволить LinkedHashMap предоставлять собственные реализации методов, объявленных в интерфейсе Map. Таким образом, он не будет наследовать все реализации от HashMap.

0
ответ дан 4 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: