虽然我不是Java专家,但我有编程经验,最近遇到了这个问题:
InetAddress localAddress = InetAddress.getLocalHost();
我觉得它看起来有点不对劲。我们将localAddress
声明为类型InetAddress
,但它被分配给InetAddress
的一个静态方法的实例?有谁能帮助我理解这个问题吗?
虽然我不是Java专家,但我有编程经验,最近遇到了这个问题:
InetAddress localAddress = InetAddress.getLocalHost();
我觉得它看起来有点不对劲。我们将localAddress
声明为类型InetAddress
,但它被分配给InetAddress
的一个静态方法的实例?有谁能帮助我理解这个问题吗?
InetAddress类没有可见的构造函数。要创建InetAddress对象,您必须使用其中一个可用的工厂方法
。
工厂方法仅仅是一个约定,即在类中的静态方法返回该类的实例。这是为了代替将构造函数重载为不同参数列表,当使用独特的方法名使结果更加清晰时使用!
这里展示了三个常用的InetAddress工厂方法:
static InetAddress getLocalHost() throws UnknownHostException
static InetAddress getByName(String hostName) throws UnknownHostException
static InetAddress[] getAllByName(String hostName) throws UnknownHostException
// Contents taken from Java---The Complete Reference by Herbert Schildt...
< p > getLocalHost()
方法仅返回表示本地主机的 InetAddress 对象。此外,您可以使用三种方法之一进行实例化。希望这能够解决您的疑惑!
Point
的类:
public class Point {
int x, y;
private Point() {}
public static Point getOrigin() {
return new Point();
}
}
它有一个静态方法getOrigin()
,返回一个新的Point
对象。这个表达式类似于你的InetAddress
示例:
Point p = Point.getOrigin();
这是许多Java应用程序和API中的一种常见模式。它还允许您控制创建的实例(getOrigin()
方法可以缓存点并返回先前创建的点,它也可以始终返回相同的对象等)。
getOrigin(int x, int y)
返回 new Point(x, y)
。 - helderdarochajava.net.InetAddress
是一个核心的Java类,用于定义网络地址。这个类有更多的静态方法来简化一些常见操作。这些静态方法是基于工厂方法模式设计的。要了解更多信息,您可以在维基百科上阅读工厂方法模式:
http://en.wikipedia.org/wiki/Factory_(object-oriented_programming)
这个类代表了一个Internet协议(IP)地址。InetAddress的一个实例由一个IP地址和可能对应的主机名组成。
静态方法被用于当任何主机名或地址被引用时,我们有预定义的过程要执行网络操作。
欲了解更多信息和方法细节,请访问。
http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html