Comparator a compareTo

0

Witam
Mam pytanie o to jakim cudem w miejsce metody przyjmującej 2 argumenty można wsadzić metodę przyjmującą 1 argument.

Tutaj wywoływana jest metoda z 2 argumentami:

 Collections.sort(list, newMyComparator()::compare)

 public int compare(MyObject o1, MyObject o2) {
        return o1.compareTo(o2);
    }

a tutaj z 1:

  Collections.sort(list, MyObject::compareTo)

 public int compareTo(MyObject o) {
        if(o.x == x)
            return 0;
        else if(o.x > x)
            return -1;
        else
            return 1;
    }
0

Bo każda metoda niestatyczna w rzeczywistości ma jeden dodatkowy, niejawny argument jakim jest referencja this.

0

To metoda compare z Comparatora ma 3 argumenty a compareTo 2, ale to dalej nie to same, i nie wyjaśnia.

1

W 1. przypadku wyciągasz metodę z instancji obiektu, a więc this jest już podany. W 2. przypadku wyciągasz metodę niestatyczną prosto z klasy, więc this jest dodany do listy parametrów.

0 użytkowników online, w tym zalogowanych: 0, gości: 0