我有一个应用程序,我正在开发多人游戏。但是我没有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确保我拥有相同地址的最佳方法是什么?
答案 0 :(得分:9)
应该是equals()
。在Java中,始终使用equals
比较对象。 ==
运算符会比较引用,而不是内容。
答案 1 :(得分:3)
不要使用==
进行比较,它会检查相同的对象,而不是相同的内容。而是使用.equals()
。