首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >INetAddress直接实例化

INetAddress直接实例化
EN

Stack Overflow用户
提问于 2014-06-18 04:22:17
回答 4查看 3.7K关注 0票数 3

我对Java相当陌生,但不是编程,我遇到了这样的情况:

代码语言:javascript
复制
InetAddress localAddress = InetAddress.getLocalHost();

在我看来。我们将localAddress声明为InetAddress类型,但它被分配为InetAddress静态方法的一个实例?有人能帮我理解这个吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-06-18 04:39:04

InetAddress类没有可见的constructors.To创建InetAddress对象,您必须使用可用的Factory Methods之一。

工厂方法仅仅是一种惯例,类中的静态方法返回该class.This的实例,而不是使用各种参数列表重载构造函数,而只有惟一的方法名才能使结果更加清楚!

这里显示了三种常用的InetAddress工厂方法:

代码语言:javascript
复制
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对象。此外,您还可以使用这三种方法中的任何一种来实例化。我希望这能消除你的疑虑!

票数 3
EN

Stack Overflow用户

发布于 2014-06-18 04:47:21

这里有个类比。你有一个类Point

代码语言:javascript
复制
public class Point {
    int x, y;

    private Point() {}

    public static Point getOrigin() {
        return new Point();
    }
}

它有一个静态方法getOrigin(),它返回一个新的Point对象。这个表达式类似于您的InetAddress示例:

代码语言:javascript
复制
Point p = Point.getOrigin();

它是许多Java应用程序和API中非常常见的模式。它还允许您控制所创建的实例( getOrigin()方法可以缓存点并返回先前创建的点,它可以始终返回相同的对象,等等)。

票数 3
EN

Stack Overflow用户

发布于 2014-06-18 04:45:14

java.net.InetAddress是一个核心java类,用于定义网络中的地址。这个类有更多的静态方法来简化一些常见的操作。这些静态方法是在工厂方法模式的基础上设计的。有关更多信息,您可以在wikipedia:programming)中阅读Factory方法模式

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24277032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档