Generics trong Java

Generics là một chức năng của Java giúp cho lập trình viên có thể chỉ định rõ kiểu dữ liệu mà họ muốn làm việc với một class, một interface hay một phương thức nào đó. Trong bài viết này, chúng ta hãy cùng tìm hiểu thêm về generics trong Java các bạn nhé!

Tại sao lại cần generics?

Trước khi generics được giới thiệu, chúng ta chỉ làm việc với class, interface hay phương thức với một kiểu dữ liệu cố định.

Ví dụ, chúng ta khai báo một đối tượng List như sau:

Với khai báo trên, giả định rằng chúng ta mong muốn chỉ làm việc với đối tượng String. Nhưng bởi vì biến l là một Collection của những đối tượng Object nên chúng ta có thể sử dụng nó với bất kỳ kiểu dữ liệu nào. Khai báo sau sẽ hợp lệ:

Điều này sẽ gây nhập nhằng kiểu dữ liệu mà chúng ta muốn làm việc và đôi khi chúng ta cũng không kiểm soát được hết ở thời điểm compile time.

Đó là nguyên nhân của sự cần thiết phải có của generics trong Java. Với generics, chúng ta sẽ chỉ định kiểu dữ liệu mà chúng ta sẽ làm việc ngay thời điểm compile time luôn.

Ví dụ trên có thể viết lại như sau:

khi đó, khai báo sau sẽ báo lỗi ngay:



Cách tạo một generics class trong Java

Đầu tiên, các bạn hãy cùng mình định nghĩa một non-generics class trước rồi sau đó sẽ chuyển class này qua generics class nhé!

Nội dung của non-generics class như sau:

Với định nghĩa như thế này, thuộc tính obj của đối tượng Student và tham số obj trong phương thức set() có thể là bất kỳ đối tượng nào. Và nếu 2 đối tượng này là khác nhau, một exception sẽ xảy ra ngay.

Để cố định kiểu dữ liệu cho thuộc tính obj và cả trong phương thức set(), chúng ta sẽ áp dụng generics trong Java. Cụ thể như sau:



Sử dụng generics class

Để sử dụng generics class, khi khởi tạo đối tượng, chúng ta sẽ truyền kiểu dữ liệu mà chúng ta muốn vào đối tượng đó.

Lấy ví dụ Student bên trên, chúng ta có thể khởi tạo đối tượng Student cùng với kiểu dữ liệu String như sau:

Lúc này, chúng ta không thể sử dụng phương thức set() với kiểu dữ liệu khác String, ví dụ:

Generics trong Java

Chia sẽ bài viết này ...Share on Facebook
Facebook
0Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin

One thought on “Generics trong Java

  1. Avatar

    public T(t nay la nhu nao em chua hieu) toModel(Class tclass) {
    return null;
    }
    giai thich giup minh y nghia cua chu T minh danh dau phia tren ?

Add Comment