Java Generics - Xóa các loại không giới hạn

Trình biên dịch Java thay thế các tham số kiểu trong kiểu chung bằng Đối tượng nếu các tham số kiểu không liên kết được sử dụng.

Thí dụ

package com.tutorialspoint;

public class GenericsTester {
   public static void main(String[] args) {
      Box<Integer> integerBox = new Box<Integer>();
      Box<String> stringBox = new Box<String>();

      integerBox.add(new Integer(10));
      stringBox.add(new String("Hello World"));

      System.out.printf("Integer Value :%d\n", integerBox.get());
      System.out.printf("String Value :%s\n", stringBox.get());
   }
}

class Box<T> {
   private T t;

   public void add(T t) {
      this.t = t;
   }

   public T get() {
      return t;
   }   
}

Trong trường hợp này, trình biên dịch java sẽ thay thế T bằng lớp Đối tượng và sau khi xóa kiểu, trình biên dịch sẽ tạo bytecode cho đoạn mã sau.

package com.tutorialspoint;

public class GenericsTester {
   public static void main(String[] args) {
      Box integerBox = new Box();
      Box stringBox = new Box();

      integerBox.add(new Integer(10));
      stringBox.add(new String("Hello World"));

      System.out.printf("Integer Value :%d\n", integerBox.get());
      System.out.printf("String Value :%s\n", stringBox.get());
   }
}

class Box {
   private Object t;

   public void add(Object t) {
      this.t = t;
   }

   public Object get() {
      return t;
   }   
}

Trong cả hai trường hợp, kết quả là như nhau -

Đầu ra

Integer Value :10
String Value :Hello World