Вы не можете расширить URL, как обнаружили. Вы можете быть в состоянии заставить JVM загрузить вашу пользовательскую версию класса, но ИМХО, это звучит как кошмар.
К счастью, вы можете реализовать пользовательский URLStreamHandlerFactory и зарегистрировать его с помощью URL.setURLStreamHandlerFactory (). Это позволит вам переносить и отслеживать, когда URL открывают потоки, так, как вы хотите.
EDIT
Но вы не сможете использовать этот подход, если ваше приложение уже зарегистрировало его; URLStreamHandlerFactories - это 1 / приложение. И многие типы контейнеров приложений используют один (например, Tomcat), поэтому, если вы используете один из них, вы SOL.