2011-09-22 64 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

相关问题