"Chà, cuối cùng - một bài học nhỏ khác về thuốc generic."

"Bây giờ tôi sẽ cho bạn biết làm thế nào để vượt qua việc xóa kiểu."

"À. Đó là điều tôi muốn biết."

"Như bạn có thể đã biết, Java có một loại Lớp, được sử dụng để lưu trữ một tham chiếu đến một lớp của đối tượng. "Đây là một số ví dụ:"

ví dụ
Class clazz = Integer.class;
Class clazz = String.class;
Class clazz = "abc".getClass();

"Ah."

"Nhưng điều mà bạn có thể không biết là cũng có một lớp chung được gọi là Lớp. Và các biến Lớp chung chỉ có thể lưu trữ các tham chiếu đến kiểu được xác định bởi đối số kiểu.  Dưới đây là một số ví dụ:"

ví dụ
Class<Integer> clazz1 = Integer.class; // Everything works well
Class<String> clazz2 = Integer.class; // Compilation error
Class<String> clazz1 = String.class; // Everything works well
Class<String> clazz2 = int.class; // Compilation error
Class<? extends String> clazz1 = "abc".getClass(); // Everything works well
Class<Object> clazz2 = "abc".getClass(); // Compilation error

"Tại sao nó lại hoạt động như vậy?"

"Chà, giá trị của trường lớp cho Integer (tức là Integer.class) thực sự là một đối tượng Class<Integer>."

"Nhưng chúng ta hãy tiếp tục đi."

"Lợi dụng thực tế là Class<T> — là một biến chung và loại biến này chỉ có thể chứa giá trị của loại T, bạn có thể đặt chúng lại với nhau theo cách khéo léo như sau:"

Ví dụ
class Zoo<T>
{
 Class<T> clazz;
 ArrayList<T> animals = new ArrayList<T>

 Zoo(Class<T> clazz)
 {
  this.clazz = clazz;
 }

 public T createNewAnimal()
 {
  T animal = clazz.newInstance();
  animals.add(animal);
  return animal
 }
}
Cách sử dụng
Zoo<Tiger> zoo = new Zoo<Tiger>(Tiger.class); // This is where we pass the type!
Tiger tiger = zoo.createNewAnimal();

"Đây không phải là một thao tác siêu phức tạp — chúng ta chỉ đơn giản là chuyển một tham chiếu đến loại mong muốn. Nhưng, nếu chúng ta chỉ đơn giản sử dụng Lớp thay vì Lớp<T>, thì ai đó có thể vô tình chuyển hai loại khác nhau: một làm đối số T , và một cái khác cho hàm tạo."

"À. Tôi hiểu. Không có gì siêu nhiên xảy ra, nhưng cũng không có gì khủng khiếp. Có một tham chiếu đến loại, và bạn có thể sử dụng nó. Nó hoạt động và thế là đủ tốt cho tôi."

"Cậu bé trở thành một người đàn ông! 'Nó hoạt động và điều đó đủ tốt cho tôi' thường là lựa chọn tốt nhất."

"Rất nhiều thứ có thể được làm lại trong Java bây giờ, nhưng chúng tôi cần duy trì khả năng tương thích với mã cũ."

"Hàng chục nghìn thư viện được đánh bóng phổ biến là lý lẽ mạnh mẽ nhất cho Java ngày nay. Do đó, Java vẫn là ngôn ngữ phổ biến nhất do duy trì khả năng tương thích ngược, vì vậy nó không thể đưa ra những đổi mới triệt để."

"Chà, tôi sẽ xây dựng Java của riêng mình bằng blackjack và..."

"Được rồi, tôi đã mệt mỏi cả ngày rồi. Hẹn lần sau."

"Tạm biệt, Rishi, và cảm ơn vì một bài học thú vị như vậy."