"Một chủ đề thú vị khác."

"Những điều bất ngờ cứ đến! Có phải là sinh nhật của tôi?"

"Hôm nay, tôi sẽ cho bạn biết về khái quát. Generics là các loại có tham số. Trong Java, các lớp chứa cho phép bạn chỉ ra loại đối tượng bên trong của chúng."

"Khi chúng tôi khai báo một biến chung, chúng tôi chỉ ra hai loại thay vì một: loại biến và loại dữ liệu mà nó lưu trữ."

"ArrayList là một ví dụ điển hình. Khi chúng ta tạo một đối tượng ArrayList mới, thật thuận tiện để chỉ ra loại giá trị sẽ được lưu trữ bên trong danh sách này."

Mã số Giải trình
ArrayList<String> list = new ArrayList<String>();
Tạo một biến ArrayList có tên là list.
Gán một đối tượng ArrayList cho nó.
Danh sách này chỉ có thể lưu trữ các đối tượng String .
ArrayList list = new ArrayList();
Tạo một biến ArrayList có tên là list.
Gán một đối tượng ArrayList cho nó. Danh sách này có thể lưu trữ bất kỳ giá trị nào .
ArrayList<Integer> list = new ArrayList<Integer>();
Tạo một biến ArrayList có tên là list.
Gán một đối tượng ArrayList cho nó.
Danh sách này chỉ có thể lưu trữ Integerintgiá trị.

"Nghe cực kỳ thú vị. Đặc biệt là phần lưu trữ các giá trị thuộc bất kỳ loại nào ."

"Có vẻ như đó chỉ là một điều tốt. Trên thực tế, nếu chúng ta đặt các chuỗi vào một ArrayList theo một phương thức và sau đó mong đợi nó chứa các số trong một phương thức khác, thì chương trình sẽ gặp sự cố (kết thúc với lỗi)."

"Tôi hiểu rồi."

"Hiện tại, chúng tôi sẽ không tạo các lớp của riêng mình với các tham số loại. Chúng tôi sẽ chỉ sử dụng các lớp hiện có."

"Bất kỳ lớp nào cũng có thể là tham số kiểu, kể cả lớp mà tôi viết?"

"Có. Bất kỳ loại nào ngoại trừ các loại nguyên thủy. Tất cả các tham số loại phải kế thừa từ lớp Đối tượng."

" Ý bạn là tôi không thể viết ArrayList<int>? "

"Thật vậy, bạn không thể. Nhưng các nhà phát triển Java đã viết các lớp bao bọc cho từng kiểu nguyên thủy. Các lớp này kế thừa Object . Đây là giao diện của nó:"

loại nguyên thủy Lớp học Danh sách
int số nguyên ArrayList< Số nguyên >
gấp đôi Gấp đôi Danh sách mảng < Đôi >
boolean Boolean Danh sách mảng < Boolean >
than Tính cách Danh sách mảng < Ký tự >
byte byte ArrayList <Byte> _

"Bạn có thể dễ dàng gán các lớp nguyên thủy và các lớp tương tự của chúng (các lớp bao bọc) cho nhau:"

ví dụ
int a = 5;
Integer b = a;
int c = b;

Character c = 'c';  //the literal c is a char
char d = c;
Byte b = (byte) 77;  // The literal 77 is an int
Boolean isOk = true;  // the literal true is a boolean
Double d = 1.0d;  // The literal 1.0d is a double

"Tuyệt. Tôi nghĩ tôi sẽ cố gắng sử dụng ArrayList thường xuyên hơn."