Если я создаю произвольный класс, который не реализует Comparable, и попытается использовать его как treeet, он выдает исключение во время выполнения, когда объект вставлен:
public class Foo {
}
public TreeSet<Foo> fooSet = new TreeSet<Foo>();
fooSet.add(new Foo()); // Throws a ClassCastException exception here: Foo is not comparable
Я не эксперт по Java, но что-то об этом казалось динамически типизированным (ala Python) таким образом, которого я не ожидал. Нет ли способа реализации TreeSet указать, что его аргумент generic type должен реализовывать Comparable, чтобы это можно было поймать во время компиляции? Не общие функции могут принимать интерфейсы в качестве аргументов; такое же невозможное с дженериками?