2013-04-26 42 views
12

Sự khác biệt trong hai khai báo sau đây của một ArrayList là gì?ArrayList <> vs ArrayList <Integer>

ArrayList<Integer> nunbers = new ArrayList<Integer>(); 

vs

ArrayList<Integer> nunbers = new ArrayList<>(); 

là một trong số họ ưa thích hơn người kia?

Trả lời

23

thứ hai có tham số kiểu của nó inferred, đó là một điều mới trong Java 7. <> được gọi là "the diamond".

Cũng lưu ý rằng type inference itself is not new in Java, nhưng khả năng suy ra nó cho lớp chung được khởi tạo là mới.

Trình biên dịch từ bản phát hành trước Java SE 7 có thể suy ra các tham số kiểu thực tế của các hàm tạo chung, tương tự như các phương thức chung. Tuy nhiên, các trình biên dịch trong Java SE 7 và sau đó có thể suy ra các tham số kiểu thực tế của lớp chung được khởi tạo nếu bạn sử dụng kim cương (<>).

Tôi muốn nói tùy chọn thứ hai có thể được ưu tiên miễn là bạn có thể đảm bảo mã chỉ cần chạy trên Java 7, vì nó rõ ràng hơn và chỉ làm giảm thông tin dư thừa.

3

Phiên bản thứ hai sẽ không biên dịch nếu phiên bản trình biên dịch java của bạn kém hơn 1.7.

2

Điều cuối cùng là lối tắt có thể được sử dụng với Java phiên bản 7 hoặc mới hơn.

3

thứ hai giảm đang lộn xộn, nó là mới trong java 7. Nhưng mã của bạn cần phải có được

List<Integer> nunbers = new ArrayList<>(); 

Vì bạn có thể mã hóa để giao diện List, loại param của việc thực hiện ArrayList được suy ra.

2

Họ sẽ biên dịch mã chính xác cùng, vì Java 7 điều thứ hai chỉ là một phím tắt, bạn có thể sử dụng, vì nó là 100% rõ ràng những gì thuộc về các <> bạn có thể bỏ trống

Các vấn đề liên quan