黑马程序员技术交流社区

标题: InetAddress类 构造函数问题 [打印本页]

作者: 青苹果    时间: 2014-5-22 21:27
标题: InetAddress类 构造函数问题
本帖最后由 青苹果 于 2014-5-22 21:28 编辑

InetAddress类中没有构造函数 而是通过static InetAddress  getLocalHost() 方法返回一个对象的  在这里听到视频里面说  没有构造函数可以不要new 对象我请教下大神们  
这个类是不是可以new一个对象的呢?
类中如果没有设定构造函数系统会默认一个空构造函数  为什么他这里说不需要new对象呢? 如果没有返回对象的方法是不是必须要new一个对象才能调用他的方法呢

作者: 邵镛    时间: 2014-5-22 21:52
这里的构造函数private InetAddress(){}私有化了。也就不能直接new了。
该类提供了一些工厂方法InetAddress.getByName ()   InetAddress.getByAddress ()。。 等来生成InetAddress。
我觉得工厂方法生成对象的好处,是能够通过方法名,就知道其中的含义了。


作者: 青苹果    时间: 2014-5-22 23:52
邵镛 发表于 2014-5-22 21:52
这里的构造函数private InetAddress(){}私有化了。也就不能直接new了。
该类提供了一些工厂方法InetAddress ...

就是单例模式把
作者: kevinmesss.tz    时间: 2014-5-23 01:53
这并不是单例模式
InetAddress的源码中是有构造函数的,你有兴趣可以去看看
API中没有对外暴漏构造函数,就会提供一个方法让你获取对象,
这个类可以new对象,他的构造函数是
InetAddress() {
        holder = new InetAddressHolder();
}
视频里的意思是没有构造函数,那么它一定有提供一个获取该类对象的方法
作者: 邵镛    时间: 2014-5-23 09:39
不是单例模式。单例是获取唯一的实例。 这个类不是的,它会根据各种静态方法getByAddress() getByName()。。。等来生成不同的实例
作者: 邵镛    时间: 2014-5-23 09:41
青苹果 发表于 2014-5-22 23:52
就是单例模式把

不是单例模式。单例是获取唯一的实例。 这个类不是的,它会根据各种静态方法getByAddress() getByName()。。。等来生成不同的实例




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2