Posted in

Ngày 1: Java Generics.

Ngày 1: Java Generics.
Generics, còn được biết đến là Parameterized Types, là đặc điểm nổi bật của Java giúp cải thiện chất lượng và tối ưu hiệu suất của mã nguồn. Generics cho phép kiểu (Type) được áp dụng lên đối tượng, giao diện và phương thức.

Ví dụ cơ bản về Generics: Trước tiên, chúng ta có Class Box không sử dụng Generics:

“`java
public class Box {
private Object object;

public void set(Object object) { this.object = object; }
public Object get() { return object; }
}
“`

Chúng ta có thể đổi Box để sử dụng Generics như sau:

“`java
public class Box {
private T t;

public void set(T t) { this.t = t; }
public T get() { return t; }
}
“`

Trường hợp đặc biệt: Khi làm việc với Generics bạn không thể sử dụng các kiểu nguyên thủy như int, char và như thế. Thay vào đó, bạn phải sử dụng class wrapper tương ứng như Integer, Character, và như thế.

1. Câu hỏi: Java Generics được sử dụng với mục đích gì?
Câu trả lời: Generics giúp giảm lỗi runtime bằng cách kiểm tra kiểu tại compile time. Nó cũng cho phép bạn thao tác với objects của kiểu parameterized.

2. Câu hỏi: Tại sao chúng ta không thể sử dụng các kiểu nguyên thủy khi làm việc với Generics?
Câu trả lời: Vì Generics yêu cầu một class object nên kiểu nguyên thủy không thể sử dụng. Thay vào đó, chúng ta cần sử dụng class wrapper tương ứng.

3. Câu hỏi: Có thể khởi tạo một đối tượng của kiểu đặc tả (ví dụ: `new T()`) trong phương thức được parametrized trong một lớp Generics không?
Câu trả lời: Không, bạn không thể tạo một instance của một type parameter.

4. Câu hỏi: Liệt kê các wildcard trong generics?
Câu trả lời: Có 3 loại wildcard (đại diện): “?”, “? extends T”, “? super T”.

5. Câu hỏi: Đặc điểm của generic method là gì?
Câu trả lời: Generic method là một method có thể được gọi với các arguments của kiểu khác nhau. Trong thời gian biên dịch, compiler sẽ xác định kiểu các argument dựa vào context hoặc giả thuyết rõ ràng. Phạm vi của type parameters của generic method là riêng cho method đó (không phụ thuộc vào class đang chứa nó).

Leave a Reply

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