INetAddress直接实例化

时间:2014-06-18 04:22:17

标签: java inetaddress

我对Java很新,但没有编程,我碰到了这个:

InetAddress localAddress = InetAddress.getLocalHost();

它向我看了一眼。我们将localAddress声明为类型InetAddress,但是它被分配了一个静态方法InetAddress的实例?任何人都可以帮我理解这个吗?

4 个答案:

答案 0 :(得分:3)

InetAddress类没有可见的构造函数。要创建一个InetAddress对象,您必须使用一个可用的Factory Methods

  

工厂方法仅仅是一种静态方法的惯例   class返回该类的实例。这是代替   拥有时使用各种参数列表重载构造函数   独特的方法名称使结果更加清晰!

此处显示了三种常用的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...

getLocalHost()方法只返回表示本地主机的InetAddress对象。 您也可以使用三种方法中的任何一种进行实例化。我希望它能清除你的怀疑!

答案 1 :(得分:3)

这是一个类比。你有一个班级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()方法可以缓存点并返回先前创建的点,它总是可以返回相同的对象等。)

答案 2 :(得分:2)

java.net.InetAddress是一个核心java类,用于网络中的定义地址。此类具有更多静态方法,可简化一些常见操作。这些静态方法是基于工厂方法模式设计的。有关更多信息,您可以阅读维基百科中的工厂方法模式: http://en.wikipedia.org/wiki/Factory_(object-oriented_programming)

答案 3 :(得分:0)

此类表示Internet协议(IP)地址。 InetAddress的实例由IP地址和可能的相应主机名

组成

使用静态方法,因为当引用任何主机名或地址时,我们有通过网络执行的预定义过程。

了解更多信息和方法详情,请访问

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

相关问题