我有一个应用程序,我现在正在开发多人游戏。但是我没有2个手机,所以我一直在我的电脑上运行一个单独的程序(注意:不是模拟器!),它模拟我的程序和多玩家方面。Android - 比较两个相同的InetAddress失败?
但是在PC上我有以下代码:
Packet input = inputQueue.take();
if (clientAddress == input.getAddress())
{
switch (input.type)
{
这工作得很好,包只是一个简单的类,我写取信息进行数据报文包和的getAddress()的返回一个InetAddress。客户地址先前在代码中设置。
但是,Android应用程序具有完全相同的代码,字面上线条完全相同,并且此InetAddress不会等同于另一个?如果我使用getHostName()或其他东西来获取2个InetAddress的字符串,然后比较它们,那么它就等于另一个。
我做错了什么,并假设一些想法我可以比较两个对象与==标志?它应该是.equals()?我认为android使用了相同的java.net代码,但可以有区别吗?
什么是确保使用InetAddress的地址相同的最佳方式?
在处理非静态的对象(或者,在字符串的情况下还有#intern():ed)时,您应该始终使用equals(..)。最保险的赌注是保持原始数据的==。 – Jens