今天讲的是java的InetAddress
类。有 2 个默认实现(如果将 InetAddressImpl
算进去,实际上是 3 个):Inet4Address
用于表示 IPv4 地址,Inet6Address
用于表示 IPv6 地址。
现在有几种隧道协议(protocol)。因为我希望软件是类型安全的,所以我考虑将它们实现为 InetAddress
的子类(例如 InetTeredoAddress
或 Inet6to4Address
)。最好的解决方案是从 Inet6Address
继承,但因为它是最终的,所以这个选项被删除了。下一个想法是创建 InetAddress 的子类并将每个方法委托(delegate)给它的 Inet6Address
pendant:
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
实现协议(protocol)的最佳方式是什么?还是 Helper 类是唯一的解决方案?
提前致谢
佐塔
最佳答案
忘掉它,着手实现一系列 URLConnectionHandlers。
关于java - 在 Java 中实现新的 InetAddress 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19377948/