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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江远云 中级黑马   /  2012-3-16 20:10  /  2673 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.net.*;
class ff
{
        public static void main(String[] args)
        {
                InetAddress i = new InetAddress();
                System.out.println(i.getLocalHost());
        }
}
提示:InetAddress()在java.net.InetAddress中不是公共的;无法从外部软件包中对其访问,自己想的话静态方法可以用类名调用,再用类类型变量接收,那InetAddress i = new InetAddress();这句话出了什么问题?

7 个回复

倒序浏览
这是典型单例模式的应用,把该类的构造方法设置成 私有的了,然后用了一个静态的共有方法返回该对象的实例

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
InetAddress,没有构造方法,只能通过直接调用静态方法例如:InetAddress. getByAddress(byte[] addr)来创建实例。
public static InetAddress getByAddress(byte[] addr)
                                throws UnknownHostException在给定原始 IP 地址的情况下,返回 InetAddress 对象。参数按网络字节顺序:地址的高位字节位于 getAddress()[0] 中。
此方法不会阻塞,即不执行任何反向名称服务查找操作。

IPv4 地址 byte 数组的长度必须为 4 个字节,IPv6 byte 数组的长度必须为 16 个字节
参数:
addr - 网络字节顺序的原始 IP 地址
引用楼上的话:这是典型单例模式的应用,把该类的构造方法设置成 私有的了,然后用了一个静态的共有方法返回该对象的实例

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
InetAddress,没有构造方法,只能通过直接调用静态方法例如:InetAddress. getByAddress(byte[] addr)来创建实例。
public static InetAddress getByAddress(byte[] addr)
                                throws UnknownHostException在给定原始 IP 地址的情况下,返回 InetAddress 对象。参数按网络字节顺序:地址的高位字节位于 getAddress()[0] 中。
此方法不会阻塞,即不执行任何反向名称服务查找操作。

IPv4 地址 byte 数组的长度必须为 4 个字节,IPv6 byte 数组的长度必须为 16 个字节
参数:
addr - 网络字节顺序的原始 IP 地址
引用楼上的话:这是典型单例模式的应用,把该类的构造方法设置成 私有的了,然后用了一个静态的共有方法返回该对象的实例
回复 使用道具 举报
谢谢两位,是没有构造方法就不可new,(){}
回复 使用道具 举报
没有没有构造方法的类,只是构造方法被私有化了,构造方法被私有化,在类以外建立对象就不能初始化,当然就不能建立对象!
回复 使用道具 举报
谢谢上面,构造方法被私有化了已经被封装在里面了,用对象的时候只能这样了
回复 使用道具 举报
李飞 中级黑马 2012-3-18 15:17:37
8#
单例设计模式

当构造函数时私有的时候,就不能new,这个时候就有两种情况了
1.  如果该类的所有方法都是静态的话,就可以不用对外提供得到该类对象的方法
2.  如果该类可以供外部使用的类有非静态方法的时候,就必须对外提供一个获取该类对象的方法,通常这个方法就是getInstance
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马