"Comparable affects the original class but Comparator doesnt" 是什么意思

What does it mean by saying "Comparable affects the original class but Comparator doesnt"

// Original class Dog
  class Dog{
   String name;
   int age;

}

//Case 1
    class Dog implements Comparable<Dog>{
             //compareTo() implementation
        }


//Case2
      class Dog implements Comparator<Dog>{
       // compare() implementation
    }

//Case 3

    class DogNameComparator implements Comparator<Dog>{
    // compare() implementation
}



 Collection.sort(dogList);
    Collectios.sort(dogList,new DogNameComparator());
    Collection.sort(dogList,new Dog());

在情况 2 中,即使他们说 Comparator 不修改原始 class,原始 class 实际上也被修改了,这不是真的吗?
可能是我没有理解正确的概念,请赐教。

Comparable 只能在原来的 class 上实现,因此它只能有一个实现(除非你使用 sub[=23 覆盖 compareTo =]).同时,Comparator不需要在原来的class上实现,所以可以有很多实现。

您的第二种情况与第一种情况完全不同,因为 compare 将可以访问三个 Dog 实例(this、参数 #1 和参数 #2) ,而 compareTo 只能访问两个 Dog 实例(this 和参数 #1)。