Generic collections được giới thiệu từ Java 5. Chúng loại bỏ việc ép kiểu (type-casting) và đảm bảo an toàn kiểu (type-safe) được kiểm tra tại thời gian biên dịch. Generic cho phép truyền kiểu dữ liệu như tham số cho lớp. Compiler chịu trách nhiệm kiểm tra tương thích kiểu.
Cú pháp
class<type>, interface<type>
An toàn kiểu (Type safety)
Generics chỉ cho phép một loại đối tượng duy nhất.
List list = new ArrayList(); // trước generics
list.add(10);
list.add("100");
List<Integer> list1 = new ArrayList<Integer>(); // có generics
list1.add(10);
list1.add("100"); // lỗi biên dịch.
Ép kiểu (Type Casting)
Không cần ép kiểu khi dùng generics.
List<String> list = new ArrayList<String>();
list.add("Adithya");
String str = list.get(0); // không cần ép kiểu
Kiểm tra lúc biên dịch (Compile-time)
Lỗi được kiểm tra tại compile-time với generics.
List list = new ArrayList(); // trước generics
list.add(10);
list.add("100");
List<Integer> list1 = new ArrayList<Integer>(); // có generics
list1.add(10);
list1.add("100"); // lỗi biên dịch