一尘不染

list.contains不起作用

java

我正在尝试使用此API用Java开发TS3
Bot:https :
//github.com/TheHolyWaffle/TeamSpeak-3-Java-
API

我有一个客户端所有服务器组的列表:

List<ServerGroup> playerGroups = TS3Bot.api.getServerGroupsByClientId(player.clientdbID);

现在,我检查列表是否包含组:

if(!playerGroups.contains(TS3Bot.botGroups.get(1))){...}

结果是错误的。我100%确定此列表包含ServerGroup。

已经使用Sysouts进行了检查。

这是ServerGroup类的链接:[https](https://github.com/TheHolyWaffle/TeamSpeak-3-Java-
API/blob/master/src/main/java/com/github/theholywaffle/teamspeak3/api/wrapper/ServerGroup.java)
//github.com/TheHolyWaffle/TeamSpeak-3-Java-
API/blob/master/src/main/java/com/github/theholywaffle/teamspeak3/api/wrapper/ServerGroup
.java

这只是ServerGroup Object.toString()。

{iconid=0, savedb=1, sortid=0, name=Test 2, n_member_removep=100, sgid=98, type=1, n_member_addp=100, namemode=0, n_modifyp=100}

阅读 866

收藏
2020-12-03

共1个答案

一尘不染

不要忘记遵守Object#equals(Object o)合同

指示其他某个对象是否与此对象“相等”。equals方法对非null对象引用实现对等关系:

这是自反的:对于任何非空参考值x,x.equals(x)应该返回true。

它是对称的:对于x和y的任何非空引用值,当且仅当y.equals(x)返回true时,x.equals(y)才返回true。

它是可传递的:对于x,y和z的任何非空引用值,如果x.equals(y)返回true,而y.equals(z)返回true,则x.equals(z)应该返回true。

这是一致的:对于任何非空引用值x和y,如果未修改对象的equals比较中使用的信息,则多次调用x.equals(y)始终返回true或始终返回false。

对于任何非空参考值x,x.equals(null)应该返回false。类Object的equals方法在对象上实现了最有区别的对等关系。也就是说,对于任何非空参考值x和y,当且仅当x和y引用同一个对象(x
== y的值为true)时,此方法才返回true。

请注意,通常有必要在重写此方法时重写hashCode方法,以维护hashCode方法的常规协定,该协定规定相等的对象必须具有相等的哈希码。

2020-12-03