Я знаю, что есть четыре ссылки на метод:
Класс :: новый
Класс :: статический метод
экземпляр :: метод экземпляра
Класс :: метод экземпляра
В этом упражнении я обнаружил другую форму методаСсылка и я хочу спросить вас, как это возможно.
class Person{
String name;
String dob;
public Person(String name, String dob){
this.name = name; this.dob = dob;
}
}
class MySorter {
public int compare(Person p1, Person p2){
return p1.dob.compareTo(p2.dob);
}
}
public class SortTest {
public static int diff(Person p1, Person p2){
return p1.dob.compareTo(p2.dob);
}
public static int diff(Date d1, Date d2){
return d1.compareTo(d2);
}
public static void main(String[] args) {
ArrayList<Person> al = new ArrayList<>();
al.add(new Person("Paul", "01012000"));
al.add(new Person("Peter", "01011990"));
al.add(new Person("Patrick", "01012002"));
//INSERT CODE HERE
}
}
В этом упражнении необходимо указать, сколько из приведенных выше строк может быть вставлено в данный код, независимо друг от друга, для сортировки списка, на который ссылается al:
- java.util.Collections.sort (al, (p1, p2) -> p1.dob.compareTo (p2.dob));
- java.util.Collections.sort (al, SortTest :: diff);
- java.util.Collections.sort (al, новый MySorter () :: сравнивать);
Я думал, что правильные ответы были 1 и 2. Но решение этого упражнения указывает на правильность всех строк (1, 2 и 3).
Как это возможносоздать "новый класс: staticMethod"?
Большое спасибо!
A.