Почему URL
конструкторы выбрасывают java.net.MalformedURLException
: нет протокола в этих очень распространенных случаях?
Потому что это недействительные URL.
Конструктор URI поддерживает такие относительные URL.
Неправильно. Это позволяет относительные URI с.
Кстати, правильно ли говорить «относительный URI» вместо «относительный URL»? Потому что 99% всех ссылок в Интернете - это «относительный URL», а не «относительный URI».
Нет. Это не правильно 1 .
Спецификации для URI и URL дают понять, что «относительный URL» не является допустимой терминологией. См https://tools.ietf.org/html/rfc3986
Разработчики API-интерфейсов Java для URI
и URL
решили (мудро ИМО) правильно использовать терминологию; то есть согласно соответствующим спецификациям. Вот почему конструктор URL
не будет принимать относительную строку URI в качестве аргумента.
1 - Не более правильно, чем правильно называть муравьев "жуками". Истинными жуками являются Hemiptera, который является отрядом насекомых (насекомых), который отличается наличием сосущих частей рта. Муравьи являются членами ордена перепончатокрылых. Как гласит Википедия: «Многие насекомые, обычно известные как« жуки », принадлежат к другим отрядам; например, любовный клоп - это муха, а майский жук и божья коровка - жуки». (см. Википедия ) Моя точка зрения? Если бы разработчики Java злоупотребляли различием URL / URI, они были бы такими же плохими, как биолог, который называл муравьев «ошибками» в научной статье.