2011-12-12 9 views

答えて

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...()方法に注意を払う:ドキュメントを確認してください。

+0

または '' 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

+0

@edwardw - リモートアドレスへのアクティブな接続を持っている、または持っているつもりなら、そうです。しかし、それは常にそうであるとは限りません。 – aroth

1

Inet4AddressInet6Addressはパッケージのみ表示され、デフォルトのコンストラクタを持っているので、InetAddressが見ることができますそれ。 InetAddressが提供されたアドレスに基づいてサブクラス化InetAddress関連を取得するためにFactory methodsを公開Flyweight patternあるのでInetAddressがコンストラクタを持っていない理由

理由があります。

関連する問題