Это похоже на компиляцию с Java 7 и любой версией библиотек Scala:
public static void main(String[] args) {
scala.collection.immutable.Set<String> set = new scala.collection.immutable.HashSet<String>();
Iterator<String> iterator = set.iterator();
}
Он также отлично компилируется с Java 8 и Scala 2.11.5+. Но с Java 8 и Scala 2.11.4 Eclipse жалуется:
The method iterator() is ambiguous for the type Set<String>
Я не понимаю этого. Вы можете получить двусмысленность относительно того, какой перегруженный метод выбрать в некоторых контекстах, но, конечно же, если вы не передаете какие-либо аргументы?
Самое странное, что если я переделаю его так:
public static void main(String[] args) {
Iterator<String> iterator = new scala.collection.immutable.HashSet<String>().iterator();
}
тогда жалоба уходит. Мне кажется, это точно соответствует версии выше. Так почему же он теперь компилируется отлично?