Я ожидал ClassCastException при попытке запустить следующий фрагмент кода:
// TreeSet<StringBuffer> t = new TreeSet<StringBuffer>((a, b) -> -
// a.toString().compareTo(b.toString()));
TreeSet<StringBuffer> t = new TreeSet<StringBuffer>();
Function<String, StringBuffer> f = s -> new StringBuffer(s);
t.add(f.apply("A"));
t.add(f.apply("M"));
t.add(f.apply("B"));
t.add(f.apply("Z"));
t.add(f.apply("G"));
System.out.println(t);
Я прокомментировал код компаратора и пытался использовать без компаратора. Но я все еще получаю правильный вывод. Как это возможно, потому что StringBuffer не реализует Comparable интерфейс. Я использую Java 11. Были ли какие-либо изменения, сделанные в более поздней версии, связанные с этим.