所以我在代码中遇到了一个小问题:
synchronized(clients)
clients.remove(this);
}
当一个客户端断开连接时,但现在我需要能够将该客户端的名称发送给所有其他客户端,要做到这一点,我必须做一些类似的事情
synchronized(clients)
broadcast("Remove:"+clients.get(this).name);
clients.remove(this);
}
但很明显,我无法用"this"来获取索引,所以我该如何获取正确的客户名称呢?谢谢
为什么不简单地使用this.name?既然已经有了对象,为什么需要获取索引才能再次获取对象?
编辑:
要回答标题中的问题(获取对象的索引),请使用indexOf
您看过ArrayList中的indexOf函数吗?
int index = clients.indexOf(this);
// Do what ever...
clients.remove(index); // or clients.remove(this);
我认为您想要从列表中删除特定的对象。如果你从你的代码中获得索引
int index = clients.get(this)
然后你可以很容易地删除
clients.remove(index);
或者,如果您从列表中得到对象,则删除
clients.remove(object) // remove by object