今日InetAddress
はJavaのクラスについてです。IPv4 アドレスを表すためと IPv6 アドレスを表すための2 つのデフォルトの実装があります (InetAddressImpl
カウントすると実際には 3 つ) 。Inet4Address
Inet6Address
現在、いくつかのトンネリング プロトコルがあります。私はソフトウェアをタイプ セーフにしたいので、それらをInetAddress
(InetTeredoAddress
またはInet6to4Address
たとえば ) のサブクラスとして実装することを考えました。最善の解決策は継承する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
プロトコルを実装する最良の方法は何ですか? それとも、ヘルパー クラスが唯一の解決策ですか?
前もって感謝します
ゾタ