Android - 比较两个相同的InetAddress会失败吗?

时间:2011-10-31 14:30:20

标签: java android equals inetaddress

我有一个应用程序,我正在开发多人游戏。但是我没有2部手机,所以我一直在我的电脑上运行一个单独的程序(注意:不是模拟器!),它模拟了我的程序和多人游戏方面。

但是在PC上我有以下代码:

Packet input = inputQueue.take();

                if (clientAddress == input.getAddress())
                {
                    switch (input.type)
                    {

这很好用,Packet只是一个简单的类,我写的是从Datagram包中获取信息,getAddress()返回一个InetAddress。客户端地址先前已在代码中设置。

然而,Android应用程序具有完全相同的代码,字面上的行完全相同,这个InetAddress不会等同于另一个?如果我使用getHostName()或其他东西获取2 InetAddress的字符串并进行比较,那么它就等于另一个。

我做错了什么并且通过思考我可以将这两个对象与==符号进行比较来假设一些东西?它应该是.equals()吗?我以为android使用了相同的java.net代码,但可能有区别吗?

使用InetAddress确保我拥有相同地址的最佳方法是什么?

2 个答案:

答案 0 :(得分:9)

应该是equals()。在Java中,始终使用equals比较对象。 ==运算符会比较引用,而不是内容。

答案 1 :(得分:3)

不要使用==进行比较,它会检查相同的对象,而不是相同的内容。而是使用.equals()