Bernhard: URL "normalisieren"

Beitrag lesen

Hi!

Alles schön und gut, aber: Warum verhindert das, dass URL von URI abgeleitet sein sollte?
Kompatibilitätsgründe verhindern eigentlich nicht, dass man die Vererbungshierarchie in dieser Weise ändert. Auf Code der URL benutzt, hätte das ja keine Auswirkungen.

Bist du da sicher?

Ich denke mir folgendes: Fügt man URI als Oberklasse für URL hinzu, würde sich garantiert die Größe (im Sinne von Speicherbedarf) eines URL-Objektes ändern. Wenn man ein Java-Programm hat, welches noch mit einer älteren Java-Version, die URI als Oberklasse _nicht_ kennt, kompiliert wurde, und dieses einem neueren Interpreter verfüttert, kommt der dann zur Laufzeit einfach so mit den alten URL-Objekten zurecht?

Aber natürlich ist es schwierig, da die Schnittstelle von URL nie so entworfen wurde, dass man das von URI ableiten könnte.

Das wäre auf jeden Fall ein Problem.

Die Frage ist, ob man das ableiten könnte, würde man es neu schreiben. Vermutlich wäre es keine gute Idee, da URL eine ziemlich andere Datenstruktur ist. URL ist immer normalisiert. Eine von URI abgeleitete Implementierung würde sich also ziemlich anders verhalten, als URI das eigentlich tut. Das sollte man bei Vererbung vermeiden, da Code der eine URI verwendet, sich ja nicht nur darauf verlässt, dass es die gleichen Methoden hat, sondern auch darauf, dass die das gleiche oder etwas sehr ähnliches tun.

Den letzten Satz halte ich für falsch. Der Sinn der objektorientierten Programmierung ist ja gerade Polymorphismus, also die Möglichkeit, Unterklassen zu bilden und Methoden zu überschreiben und dass die jeweils zum konkreten Objekt passende zur Laufzeit aufgerufen wird ("dynamic binding"), auch wenn nur der Typ der Oberklasse bekannt ist. Dass diese Methode alles mögliche machen kann, sollte jeder OO-Programmierer wissen.

Und Fakt bleibt einfach: Jeder URL ist ein URI.

Gruß
Bernhard