InetAddress
、Inet4Address
、およびInet6Address
のクラスには可視コンストラクタがないのはなぜですか?Inet * Addressクラスに可視コンストラクタがないのはなぜですか?
5
A
答えて
7
工場出荷時のクラスなので、静的メソッドを使用してファクトリインスタンスを返すことは、そのようなオブジェクトを作成する状況が少々ある場合に意味があります。
コンストラクタのオーバーロードではなく、状況ごとにさまざまな引数を組み合わせて覚えておく必要がありますが、状況ごとに1つのメソッドが提供されます。この場合
、あなたはのいずれかのオブジェクトを作成することができます:自分のアドレスを取得し、
getLocalHost()
。getByName()
、サイトの「プライマリ」アドレスを取得する。またはgetAllByName()
、アドレスのリストを取得します。
これは、それらの多くのためhereを見るために、そのページを検索し、完全なリストではありません。
Methods in java.net that return InetAddress
7
これらは直接インスタンス化されることは意図されていないため(実際これは知っておくと便利なパターンです)。その代わりに、APIが提供するさまざまな「ファクトリ」メソッドを使用してインスタンスを取得することを意味します。特に、
http://docs.oracle.com/javase/1.5.0/docs/api/java/net/InetAddress.html
静的getBy...()
方法に注意を払う:ドキュメントを確認してください。
1
Inet4Address
とInet6Address
はパッケージのみ表示され、デフォルトのコンストラクタを持っているので、InetAddress
が見ることができますそれ。 InetAddress
が提供されたアドレスに基づいてサブクラス化InetAddress
関連を取得するためにFactory methodsを公開Flyweight patternあるのでInetAddress
がコンストラクタを持っていない理由
理由があります。
関連する問題
- 1. 抽象クラスにコンストラクタとプライベートメンバーが必要なのはなぜですか?
- 2. このクラスに2つのコンストラクタがあるのはなぜですか?
- 3. コンパイラが派生クラスのコンストラクタの定義に不満を持っていないのはなぜですか?
- 4. コンストラクタでマウスをキャプチャできないのはなぜですか
- 5. コンストラクタがプライベートであるクラスから継承できないのはなぜですか?
- 6. immutable.jsクラスに "new"が必要ないのはなぜですか?
- 7. BCLにCRCクラスがないのはなぜですか?
- 8. ButtonクラスにgetOnClickListenerがないのはなぜですか? (Android)
- 9. Javaコンストラクタを同期できないのはなぜですか?
- 10. PERSONがrefクラスではないのはなぜですか?
- 11. なぜ$ address-> hasCouponCode()は常にnullを返しますか?
- 12. がないのはなぜ内部クラスのコンストラクタで外部クラスのオブジェクトのLocalVariableTableのエントリ(Javaのバイトコード)
- 13. プライベートな引数なしコンストラクタではないのはなぜですか?
- 14. System.Randomクラスが静的でないのはなぜですか?
- 15. PHPコンストラクタはなぜメソッドですか?
- 16. 非シリアライズ可能な拡張可能クラスへのパラメータのないコンストラクタの追加
- 17. クラスのプロトタイプが機能しないのはなぜですか?
- 18. TextBoxにフォーカスがあるときにWPFグリッドの可視性が遅くなるのはなぜですか?
- 19. なぜ基本クラスのコンストラクタが最初に呼び出されないのですか
- 20. このSocketクラスにコンストラクタ引数を指定できないのはなぜですか?
- 21. フォールバック可変コンストラクタ - これはなぜ機能しますか?
- 22. クラスが呼び出されないのはなぜですか?
- 23. Eclipseがクラスを更新しないのはなぜですか?
- 24. Bootstrapクラスが適用されないのはなぜですか?
- 25. HttpUtilityクラスが認識されないのはなぜですか?
- 26. なぜコンストラクタで例外をキャッチできないのですか?
- 27. Java Patternクラスがコンストラクタではなくファクトリメソッドを使用するのはなぜですか?
- 28. RouteConfigとクラス、なぜコンストラクタがサービスとルータを必要とするのですか?
- 29. なぜTHashedStringListは重複を無視しないのですか?
- 30. なぜ "foo f();"クラス "foo"のコンストラクタを呼び出しますか?
または '' java.net.Socket'''インスタンスから取得します。[getInetAddress](http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#getInetAddress ()およびgetLocalAddress(http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#getLocalAddress())を参照してください。 – edwardw
@edwardw - リモートアドレスへのアクティブな接続を持っている、または持っているつもりなら、そうです。しかし、それは常にそうであるとは限りません。 – aroth