如何避免URL.equals需要使用Java访问internet?

如何避免URL.equals需要使用Java访问internet?,java,url,dns,equals,equality,Java,Url,Dns,Equals,Equality,Java类库中URL类的equals()方法发出DNS请求,以获取主机名的IP,检查两个IP是否相等。即使是从相同的字符串创建的URL也会发生这种情况。有没有办法避免访问internet?不要使用URL.equals。正如文件所说 注意:equals的定义行为已知与HTTP中的虚拟主机不一致 如果您只想比较url字符串,请尝试 url1.toString().equals(url2.toString()) 使用而不是URL。我应该如何测试相等性?可以使用toString()或toExterna

Java类库中URL类的
equals()
方法发出DNS请求,以获取主机名的IP,检查两个IP是否相等。即使是从相同的
字符串创建的URL也会发生这种情况。有没有办法避免访问internet?

不要使用URL.equals。正如文件所说

注意:
equals
的定义行为已知与HTTP中的虚拟主机不一致


如果您只想比较url字符串,请尝试

url1.toString().equals(url2.toString())

使用而不是URL。

我应该如何测试相等性?可以使用toString()或toExternalForm()获取外部表单,并进行比较。这里的初步测试表明它无法访问DNS。我只是对比尔的答案投了赞成票。只需在URL对象上调用toURI()。当然,这在语义上也是有意义的,因为您希望比较标识符而不是位置。这两个字符串可能有很大的不同,但指向同一资源。如果要检查URL引用的资源,显然需要访问internet。因此,我假设他想要比较URL本身。因此,我的限定条件是“如果您只想比较url字符串”。