Эта вещь просто не компилируется. Я не знаю, что я делаю неправильно. Компилятор лает на Collections.sort (users);. См. Сообщение об ошибке ниже справа после перечисления программы. Было бы очень признательно, если бы вы могли дать какое-либо представление о том, что действительно не так с этим фрагментом кода.Не найдено подходящих методов сортировки (Список <User>)
Вот вывод из команды Java -версии:
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
.
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
class MyApp {
public static void main(String[] args) {
List<User> users = new ArrayList<>();
users.add(new User("John Doe"));
users.add(new User("Bob Smith"));
users.add(new User("Jane Doe"));
users.add(new User("Bill Gates"));
Collections.sort(users);
for (User user : users)
System.out.println(user.name);
}
}
class User implements Comparable<User> {
public String name;
User(String name) { this.name = name; }
@Override public int compareTo(User user) {
return this.name.compareTo(user.name);
}
}
Вот уродливые сообщение об ошибке, что я получаю:
MyApp.java:15: error: no suitable method found for sort(List<User>)
Collections.sort(users);
^
method Collections.<T#1>sort(List<T#1>) is not applicable
(inference variable T#1 has incompatible bounds
equality constraints: User
upper bounds: Comparable<? super T#1>)
method Collections.<T#2>sort(List<T#2>,Comparator<? super T#2>) is not appli
cable
(cannot infer type-variable(s) T#2
(actual and formal argument lists differ in length))
where T#1,T#2 are type-variables:
T#1 extends Comparable<? super T#1> declared in method <T#1>sort(List<T#1>)
T#2 extends Object declared in method <T#2>sort(List<T#2>,Comparator<? super
T#2>)
1 error
Какую версию Java вы пользуетесь? – Jens
java version "1.8.0_25" Java (TM) SE Runtime Environment (build 1.8.0_25-b18) 64-разрядная виртуальная машина Java HotSpot TM (сборка 25.25-b02, смешанный режим) –
Поскольку вы импортируете ArrayList, List и Collections *, но не * Сравнительно, и поскольку я видел это раньше: вы определили свой собственный интерфейс под названием Comparable? –