87.Generic trong lập trình Java

Java Generic là một tính năng trong ngôn ngữ lập trình Java cho phép bạn tạo các lớp, giao diện và phương thức có thể chấp nhận nhiều kiểu dữ liệu khác nhau. Nó cho phép bạn viết mã linh hoạt và tái sử dụng mã trong các tình huống khác nhau mà không cần viết lại mã nhiều lần.

Java Generic được triển khai bằng cách sử dụng các tham số kiểu (type parameters) được khai báo trong dấu ngoặc nhọn (<>) sau tên của lớp, giao diện hoặc phương thức. Tham số kiểu này được sử dụng trong mã bên trong lớp, giao diện hoặc phương thức để tham chiếu đến kiểu dữ liệu chưa biết.

Dưới đây là một số ví dụ về cách sử dụng Java Generic:

  1. Generic Class (Lớp Generic):
java
public class Box<T> {
    private T data;

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

Trong ví dụ trên, T là một tham số kiểu và có thể thay đổi thành bất kỳ kiểu dữ liệu nào khi khởi tạo đối tượng của lớp Box.

  1. Generic Method (Phương thức Generic):
java
public <T> T getMax(T[] array) {
    T max = array[0];
    for (T element : array) {
        if (element.compareTo(max) > 0) {
            max = element;
        }
    }
    return max;
}

Trong ví dụ trên, phương thức getMax là một phương thức Generic với tham số kiểu T, và nó có thể trả về giá trị kiểu T tùy chỉnh phù hợp với kiểu dữ liệu của mảng được truyền vào.

  1. Wildcards (Ký tự đại diện):

Trong Java Generic, bạn có thể sử dụng các ký tự đại diện (?) để tham chiếu đến kiểu dữ liệu không xác định hoặc không quan tâm trong một số trường hợp. Ví dụ:

java
public void printList(List<?> list) {
    for (Object item : list) {
        System.out.println(item);
    }
}

Phương thức printList trong ví dụ trên có thể in ra danh sách các phần tử với bất kỳ kiểu dữ liệu nào, mà không quan trọng kiểu cụ thể của chúng.

Java Generic giúp tăng tính linh hoạt và độ tin cậy của mã, cho phép bạn tạo ra mã tái sử dụng dễ dàng và giảm thiểu lỗi liên quan đến kiểu dữ liệu.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top