Мне нужно заменить все специальные управляющие символы в строке в 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
)? Я не могу представить, что это опечатка ...
Спасибо.
Я полагаю, это способ сказать
Независимо от того, какие интерфейсы реализует HashMap (сейчас или в будущем), этот класс должен реализовать интерфейс Map.
Если кто-то, ответственный за HashMap, решит, что он больше не должен реализовывать интерфейс Map, компилятор предупредит сопровождающего LinkedHashMap, что он больше не реализует интерфейс Map так, как он задумал.
Конечно, это глупо в данном конкретном случае (HashMap, очевидно, всегда будет Map), но подобные ситуации могут извлечь пользу из такого соглашения (и привели к его появлению).
Это древний код. До некоторой степени JDK 1.1.6 или около того, Javadoc не отображал унаследованные интерфейсы, поэтому было обычным или действительно необходимым повторять их в производных классах, чтобы Javadoc работал правильно. Они были представлены в JDK 1.2, но были доступны задолго до этого как надстройка для 1.1.x.
Это похоже на соглашение о стиле / коде: LinkedHashSet имеет аналогичную подпись. Возможно, это просто для того, чтобы подчеркнуть использование интерфейса. Сравните с C ++, где рекомендуется писать «виртуальные» со всеми виртуальными функциями, даже если они уже неявно виртуальны.
Возможно, это ошибка кодировщика.
Они также могли захотеть сделать использование интерфейса явным. Поскольку двойное объявление не наносит вреда, кроме дополнительных нажатий клавиш, у меня нет с этим проблем.
Это проясняет намерение, так что становится очевидным, что это предназначено для реализации карты с конкретным поведение, которое случайно создается расширением HashMap, что позволяет использовать его в некоторых местах вместо HashMap.
Мое предположение заключается в том, чтобы позволить LinkedHashMap предоставлять собственные реализации методов, объявленных в интерфейсе Map. Таким образом, он не будет наследовать все реализации от HashMap.