3

今天是关于InetAddressjava的类。有 2 个默认实现(如果InetAddressImpl算上实际是 3 个):Inet4Address用于表示 IPv4 地址和Inet6Address用于表示 IPv6 地址。

现在有几种隧道协议。因为我希望软件是类型安全的,所以我考虑将它们实现为InetAddressInetTeredoAddressInet6to4Address例如)的子类。最好的解决方案是继承自,Inet6Address但因为它是最终的,所以这个选项被放弃了。下一个想法是创建 InetAddress 的子类并将每个方法委托给它的Inet6Address挂件:

class InetTeredoAddress
    extends InetAddress {

    protected Inet6Address address;

    @Override
    public boolean isMulticastAddress() {
        return address.isMulticastAddress();
    }

    @Override
    public boolean isAnyLocalAddress() {
        return address.isAnyLocalAddress();
    }

    ...
}

这又一次失败了,因为它的构造函数只在 java.net.* 中可见。只是为了好玩,我尝试创建一个名为java.net并将所有类放入其中的包。这样我就可以编译了,但是在启动程序时,(惊喜)发生了以下错误

org.testng.TestNGException: java.lang.SecurityException: Prohibited package name: java.net

实施协议的最佳方式是什么?还是 Helper 类是唯一的解决方案?

提前致谢

佐塔

4

1 回答 1

1

忘记它,并着手实现一系列 URLConnectionHandlers。

于 2013-10-15T09:54:58.407 回答