java.net.URL
의 equals
이나 hashCode
메서드는 hostname이나 IP 주소를 확인하기 위해, NameService(일반적으로 DNS)에 lookup 호출을 할 수도 있습니다.
따라서 네트워크 상태에 따라 시간이 오래 걸릴 수 있습니다.
반면 URI
는 이러한 호출을 수행하지 않으므로, URL
의 특정한 기능이 필요하지 않은 경우, 이를 대신 사용해야 합니다.
일반적으로 리소스에 실제로 접근할 필요가 하기 전까지는 URI
클래스를 사용하는 것이 좋습니다.
URI
를 URI.toURL()
을 사용하여 URL로 변환할 수 있습니다.
이 규칙은 Map
이나 Set
에서 URL
의 사용을 확인하고 있거나, equals, hashCode 메서드를 직접 호출하는 경우 알림을 울립니다.
(^역: Map 이나 Set 내부에서 equals 메소드를 호출하기 때문인 것으로 보입니다)
규칙을 어긴 코드
public void checkUrl(URL url) {
Set<URL> sites = new HashSet<URL>(); // 규칙을 어긴 코드
URL homepage = new URL("http://sonarsource.com"); // 규칙을 어긴 코드
if (homepage.equals(url)) { // 규칙을 어긴 코드
// ...
}
}
규칙을 준수한 해결책
public void checkUrl(URL url) {
Set<URI> sites = new HashSet<URI>(); // 규칙을 준수한 해결책
URI homepage = new URI("http://sonarsource.com"); // 규칙을 준수한 해결책
URI uri = url.toURI();
if (homepage.equals(uri)) { // 규칙을 준수한 해결책
// ...
}
}
If you like SONARKUBE, don’t forget to give me a star.