我有一個應用程序,我現在正在開發多人遊戲。但是我沒有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