Điều này dường như biên dịch tốt với Java 7, và bất kỳ phiên bản của thư viện Scala:Tại sao điều này biên dịch theo Java 7 nhưng không theo Java 8?
public static void main(String[] args) {
scala.collection.immutable.Set<String> set = new scala.collection.immutable.HashSet<String>();
Iterator<String> iterator = set.iterator();
}
Nó cũng biên dịch tốt với Java 8 và Scala 2.11.5+. Nhưng với Java 8 và Scala 2.11.4, Eclipse than phiền:
The method iterator() is ambiguous for the type Set<String>
Tôi không hiểu điều này. Bạn có thể nhận được sự mơ hồ mà qua đó phương pháp quá tải để chọn trong một số bối cảnh, nhưng chắc chắn không nếu bạn không đi qua bất kỳ đối số?
Điều thực sự kỳ lạ là nếu tôi viết lại nó như thế này:
public static void main(String[] args) {
Iterator<String> iterator = new scala.collection.immutable.HashSet<String>().iterator();
}
thì khiếu nại sẽ biến mất. Điều này dường như với tôi chính xác tương đương với phiên bản trên. Vậy tại sao nó bây giờ biên dịch tốt?
kiểm tra những gì đã thay đổi trong API của 'scala.collection.immutable.Set' trên Scala 2.11 .4 và 2.11.5? nếu đó là mã nguồn mở –
@WvdL không có gì thay đổi. – mkrakhin