Java Generic - Viblo
Có thể bạn quan tâm
-
Generic programming là cách tạo ra đoạn mã có reusable (tính tái sử dụng cao), nó rất hữu ích cho những người viết software libraries (thư viện phần mềm) làm sao để generic programming (lập trình có tính tổng quát) vì nó cho phép người dùng sử dụng ở những tình huống khác nhau.
-
Sau đây là cách tạo ra Generic Class và Generic Method (đại khái là Lớp chung chung và Method chung chung có thể sử dụng cho các đối tượng khác nhau). 1. Cách tạo và sử dụng Generic Class
-
Các bạn đã từng dùng ArrayList<T> đây là Collection có thể là tập hợp của đối tượng bất kỳ ví dụ: ArrayList<String> hoặc ArrayList<Student> hoặc ArrayList<Object> , ...v...v... Như các bạn đã thấy cách tạo ra lớp Generic Class ArrayList<T> có thể sử dụng cho các đối tượng khác nhau và ở đây mình sẽ nói cho các bạn cách tạo ra và sử dụng nó giống như trên.
-
Để dể hiểu lấy 1 ví dụ minh họa:
-
Tôi tạo ra một lớp để chứa các chuỗi String nó được sắp xếp lần lượt. Có 3 phương thức enqueue thêm vào 1 String vào, dequeue xóa bỏ String và isEmpty kiểm tra có String nào trong danh sách ko.
Dùng như này à
QueueOfStrings qOfString = new QueueOfStrings(); qOfString.enqueue(new String());- Bằng cách tạo class như này tôi chỉ có thể chứa được String, giờ tôi muốn chứa kiểu Double hoặc kiểu đối tượng khác thì sao, lại viết mới 1 class cụ thể cho dạng đó à. Không, tôi sẽ tạo ra class tương tự như trên nhưng kiểu dữ liệu sẽ để dạng động (nghĩa là nó có thể chứa bất cứ thứ gì)
-
T là (type parameters) đại diện cho đối tượng bạn truyền vào để lưu trữ, T là ký tự bất kỳ, bạn có thể thay thế bằng 1 từ khác ví dụ như class Queue<ItemType> {...}
-
Cách sử dụng đa năng hơn nhiều rồi, tôi có thể tạo ra Queue chứa String hoặc Int hoặc .... đối tượng khác nhau.
- Có thể tạo ra 2 hoặc nhiều type parameters như sau:
2. Cách tạo ra Generic Method
-
Cũng giống như Collection.Sort() có thể sắp xếp được bất cứ Object đối tượng nào khác thì ta cũng tạo ra phương thức có thể dùng cho các đối tượng khác nhau.
-
Ví dụ phương thức countOccurrences đếm số lần xuất hiện chuỗi String stringPatern có trong mảng String[] listString như sau:
-
Với cách viết method như trên ta chỉ có thể truyền tham số mảng String và 1 chuỗi String để tìm kiếm chuỗi String trong mảng String[] đó. Nếu áp dụng phương thức trên để tìm kiếm kiểu số nguyên Int trong mảng Int[] là không thể.
-
Giờ cách viết tổng quát method trên có thể áp dụng cho mọi đối tượng như sau:
T (type parameter) có thể thay bằng tên khác T phải đặt trước giá trị trả về của phương thức
- Một ví dụ khác:
- Bản thân Collection<T> bản thân nó đã là generic type, đây là method rất chung chung. Nó có thê sủ dụng cho ArrayList of Integers, a TreeSet of Strings, a LinkedList of JButtons, ....v..v..
3.Ký tự đại diện <?>
- Xét ví dụ sau:
- Phương thức checkEquals chỉ chấp nhận tham số e có kiểu dữ liệu giống với biến number. Phương thức checkEquals2 chấp nhận tham số e có kiểu dữ liệu khác với biến number.
Ký tự đại diện <? extends type> chấp nhận bất ký đối tượng nào miễn là đối tượng này kế thừa từ type hoặc đối tượng của type
- Ví dụ:
Trong đó: 
- Sử dụng phương thức processElement (Chấp nhận bất ký đối tượng nào miễn là đối tượng này phải kế thừa từ lớp A hoặc đối tượng của A => ClassA, ClassB và ClassC)
- Ký tự đại diện <? super type> chấp nhận bất ký đối tượng nào miễn là đối tượng này là cha của type hoặc đối tượng của type
Ví dụ:
public void processElement(List<? super A> elements){ ... } List<A> listA = new ArrayList<A>(); processElement(listA); List<Object> listO = new ArrayList<Object>(); processElement(listO);Generic trong java – Giới hạn kiểu dữ liệu với ký tự đại diện <? extends type>
- Có một số trường hợp chúng ta muốn hạn chế kiểu dữ liệu của các tham số. Chẳng hạn tạo phương thức chỉ chấp nhận tham số với kiểu dữ liệu là số nguyên hoặc số thực.
Từ khóa » Generic Trong Java Là Gì
-
Làm Quen Với Generics Trong Java - CodeLearn
-
Generics Trong Java - VietTuts
-
Lợi ích Của Việc Sử Dụng Generics Trong Java
-
Hướng Dẫn Sử Dụng Java Generics - GP Coder (Lập Trình Java)
-
Tự Học Java | Generics Trong Java »
-
Hướng Dẫn Và Ví Dụ Java Generics - Openplanning
-
Bí Mật đằng Sau Tính Năng Generic Trong Ngôn Ngữ Java - CodeGym
-
Generics Trong Java Với Ví Dụ Cụ Thể - Deft Blog
-
Java Bài 52- Generic Tập 2 - Phương Thức Generic & Lớp Generic
-
Generic Trong Java
-
Java Bài 51 - Generic Tập 1 - Làm Quen Với Generic - Yellow Code ...
-
Generics Trong Java - Cùng Dev
-
Hướng Dẫn Sử Dụng Java Generics - VietMX's Blog
-
Java: Collection Và Generic | V1Study