为什么我们不能使用new关键字创建InetAddress类的对象

时间:2016-12-08 16:19:31

标签: java

我检查了我的java开发包中的代码InetAddress类文件,我看到以下几行。

行号:302 - 308

/**
     * Constructor for the Socket.accept() method.
     * This creates an empty InetAddress, which is filled in by
     * the accept() method.  This InetAddress, however, is not
     * put in the address cache, since it is not created by name.
     */
    InetAddress() {
        holder = new InetAddressHolder();
    }

在上面的代码中,我可以看到InetAddress类修饰符是default而不是private然后我们也无法使用新方法创建InetAddress类的对象。喜欢以下

InetAddress addr = new InetAddress();

1 个答案:

答案 0 :(得分:1)

你可以....但你不应该......

记住友好意味着能见度概念...

如果您因遗漏,疏忽或错误而定义名称为 java.net;

的软件包

然后是以下

InetAddress v = new InetAddress(); 

将有效..

再次...... 不是你不能做的......是你不应该做的事情!

所以最好永远不要用sdk包名定义你自己的包,否则你会得到 像

这样的例外情况
  

java.lang.SecurityException:禁止的包名:java.net