3

今日InetAddressはJavaのクラスについてです。IPv4 アドレスを表すためと IPv6 アドレスを表すための2 つのデフォルトの実装があります (InetAddressImplカウントすると実際には 3 つ) 。Inet4AddressInet6Address

現在、いくつかのトンネリング プロトコルがあります。私はソフトウェアをタイプ セーフにしたいので、それらを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

プロトコルを実装する最良の方法は何ですか? それとも、ヘルパー クラスが唯一の解決策ですか?

前もって感謝します

ゾタ

4

1 に答える 1