Павел Соколов, обобщённые типы существуют только на этапе компиляции и являются инструкциями именно для компилятора, а не рантайма. Если в рантайме вам прилетают откуда-то Object, то придётся оперировать рефлексией. Но это тоже зачастую признак говнокода. Если вам доступен код, вызывающий setValue, то надо постараться переписать его так, чтобы Object'ами он не оперировал.
Никита Савченко, элементарно, надо написать код, который принимает ссылку, скачивает по ней страницу, заменяет все ссылки в странице на ссылки на себя, отдаёт обработанную страницу клиенту.
Василий Банников, сходу не вспомню, но между Java 8 и Java 18 несколько раз менялся формат class-файлов, добавлялись новые байткоды и появлялись новые функции виртуальной машины, типа Memory API. Чисто с инженерной точки зрения мешает то, что какой-нибудь там паттерн-матчинг выполняется в рантайме, соответственно виртуальная машина должна уметь его выполнять.
Василий Банников, обратная совместимость работает при использовании того же набора функций. То есть можно скомпилировать код с помощью JDK 18 и запустить на JDK 8, если использовались функции только JDK 8. Исключение только для синтаксического сахара.