我正在尝试使用此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 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}
不要忘记遵守Object#equals(Object o)合同
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方法的常规协定,该协定规定相等的对象必须具有相等的哈希码。
指示其他某个对象是否与此对象“相等”。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方法的常规协定,该协定规定相等的对象必须具有相等的哈希码。