Comparator a compareTo

Odpowiedz Nowy wątek
2015-01-02 22:48
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;
    }

Pozostało 580 znaków

2015-01-02 22:54
0

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


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.

Pozostało 580 znaków

2015-01-02 23:35
0

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

Pozostało 580 znaków

2015-01-02 23:59
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.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit, 2015-01-03 00:00

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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