谁能简单解释一下,为什么这段代码会抛出异常,“比较方法违反了它的一般约定!”,我该如何解决?privateintcompareParents(Foos1,Foos2){if(s1.getParent()==s2)return-1;if(s2.getParent()==s1)return1;return0;} 最佳答案 您的比较器不具有传递性。令A为B的父级,B为C的父级。既然A>B和B>C,那么一定是A>C。但是,如果在A和C上调用比较器,它将返回零,即A==C。这违反了契约(Contract),因此引发了异常。图书馆很高兴能检测到