【问题标题】:Why does InetAddress.isSiteLocalAddress() in Java source code always returns false为什么Java源码中的InetAddress.isSiteLocalAddress()总是返回false
【发布时间】:2011-11-22 18:41:42
【问题描述】:

我在查看java.net.InetAddressClass的源文件,发现很少有方法总是返回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

【问题讨论】:

    标签: java


    【解决方案1】:

    InetAddress 有一些子类覆盖这些方法并返回有用的结果。

    Like Inet4Address:根据 RFC 1918,如果地址是“本地”,则返回 true。有一行注释:

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

    对于无上下文 互联网地址(= 不是 IPv4 和不是 IPv6)返回 false 是有意义的,因为没有上下文就不存在本地站点

    【讨论】:

    • 谢谢!我已经检查过 - Inet4Address 和 Inet6Address 扩展了 InetAddress 并覆盖了所有这些方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多