我正在尝试使用此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%确定此List包含ServerGroup。
已经与Sysouts一起检查过了。
以下是ServerGroup类的链接:https://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}
答案 0 :(得分:2)
不要忘记尊重Object#equals(Object o)
合同
指示某个其他对象是否“等于”此对象。等于 method在非null对象上实现等价关系 参考文献:
它是自反的:对于任何非空参考值x, x.equals(x)应该返回true。
它是对称的:对于任何非null 参考值x和y,x.equals(y)应该返回true 如果y.equals(x)返回true。
它是传递性的:对于任何非null 参考值x,y和z,如果x.equals(y)返回true和 y.equals(z)返回true,然后x.equals(z)应该返回true。
它是一致的:对于任何非空引用值x和y,是多个 x.equals(y)的调用始终返回true或一致 如果没有在等于比较中使用的信息,则返回false 对象被修改。
对于任何非空参考值x, x.equals(null)应该返回false。类Object的equals方法 实现最具辨别力的等价关系 对象;也就是说,对于任何非空引用值x和y,这个 当且仅当x和y引用同一个对象(x时)时,该方法返回true == y的值为true)。
请注意,一旦覆盖此方法,通常需要覆盖hashCode方法,因此 保持hashCode方法的一般合同,其中说明 等于对象必须具有相同的哈希码。