A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 青苹果 中级黑马   /  2014-5-22 21:27  /  1379 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 青苹果 于 2014-5-22 21:28 编辑

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

5 个回复

倒序浏览
这里的构造函数private InetAddress(){}私有化了。也就不能直接new了。
该类提供了一些工厂方法InetAddress.getByName ()   InetAddress.getByAddress ()。。 等来生成InetAddress。
我觉得工厂方法生成对象的好处,是能够通过方法名,就知道其中的含义了。

回复 使用道具 举报
邵镛 发表于 2014-5-22 21:52
这里的构造函数private InetAddress(){}私有化了。也就不能直接new了。
该类提供了一些工厂方法InetAddress ...

就是单例模式把
回复 使用道具 举报
这并不是单例模式
InetAddress的源码中是有构造函数的,你有兴趣可以去看看
API中没有对外暴漏构造函数,就会提供一个方法让你获取对象,
这个类可以new对象,他的构造函数是
InetAddress() {
        holder = new InetAddressHolder();
}
视频里的意思是没有构造函数,那么它一定有提供一个获取该类对象的方法
回复 使用道具 举报
不是单例模式。单例是获取唯一的实例。 这个类不是的,它会根据各种静态方法getByAddress() getByName()。。。等来生成不同的实例
回复 使用道具 举报

不是单例模式。单例是获取唯一的实例。 这个类不是的,它会根据各种静态方法getByAddress() getByName()。。。等来生成不同的实例
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马