Tại sao lại dùng generic?

chào mọi người ! Cho mình hỏi tại sao phải dùng generic để giới hạn kiểu dữ liệu mà không định nghĩa kiểu dữ liệu cho class, biến, hàm, tham số,… như cách thông thường ? cảm ơn !

Bạn vui lòng thêm tag ngôn ngữ vào nhé :smiley:

3 Likes

tại mình tưởng generic ngôn ngữ nào cũng có

Bạn cho ví dụ cụ thể.
Chứ mình code thì rất thích dùng generic, vì nó… generic.

2 Likes

Bạn xem link này nhé, có giải thích tại sao lại cần Generic, cách sử dụng cũng như những hạn chế của nó: https://gpcoder.com/2868-huong-dan-su-dung-java-generics/

4 Likes

cho ví dụ đơn giản, bạn có một danh sách liên kết, các con trỏ có thể trỏ đến các lớp animal, nó là một abstract class, tuy nhiên bạn đang muốn xây dựng một chuồng gà, một chuồng gà thì không thể lọt một con bò vô được, nhưng cả gà và bò đều kế thừa từ thằng animal nên dslk của bạn đều có thể thêm vào, để ngăn chặn việc này bạn dùng generic, hiểu nôm na là nó sẽ kiểm tra class mà bạn thêm vào có phải là con gà hay không, nếu phải thì cho thêm vào, còn không thì báo lỗi.
Dựa vào đó bạn có thể xây dựng được nhiều loại chuồng như chuồng bò, chuồng heo, chuồng vịt… bằng cách sử dụng generic mà không cần chỉnh sửa mã nguồn của dslk.

5 Likes

Mình làm quen với Generic từ Typescript sau đó chú ý nhiều hơn khi thấy nhiều người kiến nghị Golang [1] cũng phải có Generic.

Sau khi đọc 1 thời gian thì thấy Generic quả thực quá phức tạp, nhiều khi là over-complicated khi lập trình viên lạm dụng nó, khi đọc 1 số typescript package thì nhiều khi không thể hiểu type/datatype của 1 số class là gì nếu không viết ra giấy. Bài bạn có đặt flag là Java, không rõ trong Java có sử dụng nhiều Generic không?

Việc sử dụng Generic trong ngôn ngữ lập trình tĩnh để giúp cho việc code-reuse, khiến ngôn ngữ đó ‘động’ hơn. Có thể hiểu Generic là kết nối giữa ngôn ngữ lập trình động (duck-typing) và ngôn ngữ tĩnh (static type).

[1] https://blog.golang.org/why-generics

7 Likes

Mấy cái này bạn cứ phải code nhiều, xong ngẫm lại lúc đọc lý thuyết mới ngộ ra đc. Chứ giải thích bây giờ chắc cũng bạn cũng chưa hiểu lắm đâu.

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?