2011-09-22 5 views
1

java.net.InetAddress 클래스의 소스 파일을 검사 중이었지만 항상 몇 가지 메소드가 false를 반환한다는 사실을 발견했습니다. 예 :Java 소스 코드의 InetAddress.isSiteLocalAddress()가 항상 false를 반환합니다.

/** 
* Utility routine to check if the InetAddress is a site local address. 
* 
* @return a <code>boolean</code> indicating if the InetAddress is 
* a site local address; or false if address is not a site local unicast address. 
* @since 1.4 
*/ 
public boolean isSiteLocalAddress() { 
return false; 
} 

내가 누락 된 것이 있습니까? 왜 항상 false를 반환하는 메서드가 필요합니까? 이 클래스의 'is'로 시작하는 모든 메소드에서 동일합니다. http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/net/InetAddress.java

답변

6

InetAddress에는 이러한 메서드를 오버라이드하고 유용한 결과를 반환하는 일부 하위 클래스가 있습니다.

처럼를 Inet4Address이 : 주소는 RFC 1918에 선 주석이있어 따라 "로컬"인 경우 true를 반환하십시오 상황 무료 인터넷 주소

// refer to RFC 1918 
// 10/8 prefix 
// 172.16/12 prefix 
// 192.168/16 prefix 

이 (=하지 IPv4 및하지의 IPv6) 문맥없이 로컬 사이트이 존재하지 않기 때문에 false을 반환하는 것이 좋습니다.

+0

감사! 내가 체크 - Inet4Address 및 Inet6Address InetAddress 확장하고 이러한 모든 메서드를 재정의했습니다. – Sundeep

관련 문제