× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Generics trong Java - Lợi ích của việc sử dụng Generics trong Java

30/06/2021 01:22

Trong lập trình Java khi lưu trữ dữ liệu, chúng ta tập trung vào nội dung chứ không phải kiểu dữ liệu và đó là lúc mà Generics trong Java được sử dụng. Hôm nay trong hướng dẫn này, chúng ta sẽ nghiên cứu về Generics trong Java và thảo luận về các tính năng và chức năng khác nhau của generic trong Java. Cuối cùng, chúng ta sẽ học cách sử dụng generic trong Java để cải thiện chất lượng của mã cùng với các ví dụ cụ thể. Giờ thì cùng bắt đầu thôi!

Khái niệm về Generics trong Java

Khái niệm về Generics trong Java

Khái niệm về Generics trong Java

Generics trong Java là một trong những tính năng quan trọng nhất được giới thiệu kể từ Java 5. Thuật ngữ Generics trong Java đại diện cho một tập hợp các tính năng trong một ngôn ngữ, liên quan đến việc xác định và sử dụng các phương thức và kiểu chung. Generics là một tính 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 Java, các phương thức và kiểu chung chung khác với các phương thức và kiểu thông thường. Chúng khác nhau vì các phương thức chung có tham số kiểu.

>>> Đọc thêm: Wildcard trong Java - Khái niệm quan trọng về Java Generic

Tại sao lại cần sử dụng Generics trong Java?

Java Generics cho phép chúng ta viết một phương thức duy nhất có thể thực hiện các hoạt động trong nhiều loại đối tượng hỗ trợ phương thức đó. Sử dụng các lớp và phương thức Java Generic, lập trình viên có thể chỉ định một tập hợp các phương thức có liên quan với một khai báo phương thức chung / chung hoặc với một khai báo một lớp.

Tại sao lại cần sử dụng Generics trong Java

Tại sao lại cần sử dụng Generics trong Java

Ví dụ, khái niệm Java Generics cho phép chúng ta viết một phương thức chung để sắp xếp một mảng gồm các loại đối tượng khác nhau, như gọi phương thức chung với Mảng ký tự, Mảng số nguyên, Mảng chuỗi, Mảng đôi, ... để sắp xếp các phần tử mảng .

Hơn nữa, Java Generics cung cấp kiểu thời gian biên dịch an toàn (compile-time type safety) cho phép lập trình viên bắt được các kiểu không hợp lệ hoặc lỗi trong quá trình biên dịch.

>>> Đọc thêm: Gắn kết tĩnh, gắn kết động trong Java - Sự khác biệt và ví dụ cụ thể

Lớp Generics trong Java

Một lớp Generic trong Java có thể là một  lớp tham chiếu đến bất kỳ kiểu nào. Để tạo một  lớp chung của một kiểu cụ thể, chúng ta đặt tham số kiểu T. Dấu ngoặc nhọn <> được sử dụng để chỉ định các kiểu tham số trong tạo lớp chung của Java.

Cách tạo lớp Generics trong Java

Việc khai báo một lớp generic tương tự như việc khai báo lớp non-generic. Sự khác biệt duy nhất là tên lớp generic được theo sau bởi một phần tham số kiểu. Đoạn mã dưới đây cho thấy ví dụ tạo một lớp chung:

class MyGenClass<T>

{

       T obj;

       void add(T obj)

       {

              this.obj=obj;

       }

       T getObj()

       {

              return obj;

       }

}

 

Ở đây, kiểu T chỉ ra rằng nó có thể tham chiếu đến bất kỳ kiểu lớp nào như số nguyên, chuỗi, ký tự,...Kiểu lớp được chỉ định sẽ lưu trữ và truy xuất dữ liệu cùng.

>>> Tham khảo: Khóa học lập trình Java

Sử dụng nhiều tham số kiểu trong các lớp Generics trong Java

Chúng ta cũng có thể sử dụng nhiều tham số của các kiểu khác nhau trong một lớp Generic, nghĩa là, phần kiểu tham số của một lớp Generic có thể có nhiều hơn một kiểu tham số được phân tách bằng dấu phẩy. Các lớp này được gọi là các lớp được tham số hóa vì chúng chấp nhận nhiều hơn một tham số.

Ví dụ:

package com.techvidvan.javagenerics;

class Test<T, U>

{

  T obj1; // An object of type T

  U obj2; // An object of type U

  // constructor

  Test(T obj1, U obj2)

  {

    this.obj1 = obj1;

    this.obj2 = obj2;

  }

  // To print objects of T and U

  public void getObject()

  {

    System.out.println(“String value: “ +obj1);

    System.out.println(“Integer value: ” +obj2);

  }

}

class Main

{

  public static void main (String[] args)

  {

    Test <String, Integer> obj = new Test<String, Integer>("TechVidvan", 15);

    obj.getObject();

  }

}

 

Output

String value: TechVidvan

Integer value: 15

Quy tắc xác định các phương thức Generics:

  • Nên có một phần tham số kiểu trong tất cả các khai báo phương thức chung, được phân cách bằng dấu ngoặc nhọn <> đứng trước kiểu trả về của phương thức.
  • Nếu có nhiều hơn một tham số trong danh sách tham số thì mỗi tham số kiểu phải được phân tách bằng dấu phẩy.
  • Chúng ta cũng có thể sử dụng các tham số kiểu để khai báo kiểu trả về và để chúng hoạt động như trình giữ chỗ cho các kiểu đối số được truyền cho phương thức chung, được gọi là đối số kiểu thực.
  • Phần thân phương thức của một phương thức chung được khai báo tương tự như bất kỳ phương thức không chung nào khác.
  • Tham số kiểu trong một phương thức chỉ có thể đại diện cho các kiểu tham chiếu, các kiểu không nguyên thủy như int, double và char.

Kết luận: Bài viết trên đã giới thiệu tới bạn về Generics trong Java. Hy vọng bạn đã có cái nhìn chung về Generics cũng như cách sử dụng Generics trong các dự án trong tương lai của mình. Tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình tại Viện công nghệ thông tin T3H.