Während URI.equals()
(sowie die problematische URL.equals()
) gibt nicht true
für diese spezifischen Beispiele zurück. Ich denke, das ist der einzige Fall, bei dem Äquivalenz angenommen werden kann (weil es im HTTP-Protokoll keinen leeren Pfad gibt) .
Die URIs http://stackoverflow.com/foo
und http://stackoverflow.com/foo/
können nicht als gleichwertig angenommen werden.
Vielleicht können Sie URI.equals()
in einer Hilfsmethode verwenden, die diesen speziellen Fall explizit behandelt.
URL :: entspricht der Referenz
%Vor%Hinweis von docs -
Zwei URL-Objekte sind gleich, wenn sie dasselbe Protokoll haben, gleichwertige Referenzhosts, dieselbe Portnummer auf dem Host und dieselbe Datei und dasselbe Fragment der Datei haben.
Zwei Hosts werden als gleichwertig betrachtet, wenn beide Hostnamen in die gleichen IP-Adressen aufgelöst werden können; Andernfalls, wenn einer der Hostnamen nicht aufgelöst werden kann, müssen die Hostnamen ohne Berücksichtigung der Groß- / Kleinschreibung gleich sein. oder beide Hostnamen gleich null.
Da der Vergleich der Hosts eine Namensauflösung erfordert, ist diese Operation eine Blockierungsoperation.
Hinweis: Es ist bekannt, dass das definierte Verhalten für equals mit dem virtuellen Hosting in HTTP inkonsistent ist.
Sie sollten stattdessen URI :: entspricht der Referenz , wie @Joachim vorgeschlagen hat.
Das Folgende könnte für Sie funktionieren - es bestätigt, dass 2 URLs gleich sind, erlaubt die Parameter in verschiedenen Reihenfolgen zu liefern und erlaubt eine Vielzahl von Optionen zu konfigurieren, nämlich:
Sie können es wie folgt testen:
%Vor%UrlComparer.java
%Vor%sameFile
public boolean sameFile (URL other) Vergleicht zwei URLs,
ausschließlich der Fragmentkomponente. Gibt true zurück, wenn diese URL und das andere Argument gleich sind, ohne die Fragmentkomponente zu berücksichtigen.
Parameter: Sonstiges - die URL, mit der verglichen werden soll. Kehrt zurück: Wahr, wenn sie auf dasselbe entfernte Objekt verweisen; sonst falsch.
gehen Sie auch durch diesen Link
As iam kann keinen Kommentar hinzufügen, Browser verursacht JavaScript-Fehler. Also, ich habe hier meinen Kommentar hinzugefügt. Bedauern für Unannehmlichkeiten.
// das, was ich vorgeschlagen habe
%Vor%Joachim Sauer also einmal nachschauen, bitte ändern Sie Ihren Ruf.