为什么Inet*Address类没有可见的构造函数?

She*_*heo 5 java

在为什么InetAddress,Inet4Address以及Inet6Address类没有明显的构造?

aro*_*oth 7

因为它们不是直接实例化的(事实上这是一个有用的模式).相反,您应该使用API​​提供的各种"工厂"方法来获取实例.查看文档:

http://docs.oracle.com/javase/1.5.0/docs/api/java/net/InetAddress.html

特别要注意静态getBy...()方法.


pax*_*blo 7

因为它是工厂级的.当您想要创建此类对象的少数情况时,使用静态方法返回工厂实例是有意义的.

因此,不是将构造函数重载到您必须记住用于每个给定情境的各种奇怪的参数组合的位置,而是在每种情况下为您提供一个(希望有名的)方法.

在这种情况下,您可以使用以下方法之一创建对象:

  • getLocalHost()得到你自己的地址;
  • getByName(),获取网站的"主要"地址; 要么
  • getAllByName(),获取地址列表.

这不是一个详尽的列表,请参阅此处了解更多信息,搜索该页面:

Methods in java.net that return InetAddress