Trước Java 7 cú pháp dưới đây được sử dụng để tạo một ArrayList,Sử dụng toán tử kim cương trong Java 7
ArrayList<Integer> ints = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7));
Nhưng kể từ Java 7 chúng ta có thể bỏ qua các loại generic trong ví dụ nhà xây dựng,
ArrayList<Integer> ints = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7));
nhưng khi tôi cố gắng làm một cái gì đó như thế nào,
ArrayList<Number> nums = new ArrayList<>(Arrays.asList(1,2,3,4,4,5.5,6.6,7.7));
tôi nhận được một lỗi, nhưng khi tôi đề cập đến các loại generic trên bên phải tức là,
ArrayList<Number> nums = new ArrayList<Number>(Arrays.asList(1,2,3,4,5.5,6.6,7.7));
Mã hoạt động hoàn hảo. Điều gì có thể là lý do đằng sau điều này?
Cảm ơn trước.
Tôi không thể kéo các đoạn cụ thể từ JLS thay đổi giữa Java 7 và 8 để hỗ trợ điều này, vì vậy đây là nhận xét, nhưng nếu bộ nhớ phục vụ Java 8 mở rộng các loại suy luận có thể được thực hiện, tôi tin cho phép tìm kiếm siêu kiểu cũng như/hoặc bằng cách sử dụng ngữ cảnh bổ sung. Đoạn mã thứ ba của bạn biên dịch mà không có khiếu nại trong Java 8. – awksp