Generics trong Java như PRO | Code Thu

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ต.ค. 2024
  • Java Generics luôn là một đề tài dễ gây nhầm lẫn. Video này sẽ đề cập những gì bạn cần biết về Generics trong Java và giúp bạn trở thành một Pro developer.
    Xin chào, nếu video này hữu ích với bạn, một lượt đăng ký kênh sẽ rất quý giá với mình. Điều đó giúp mình biết được rằng mình đang tạo ra nội dung hữu ích cho mọi người :)
    Subscribe cho Code Thủ - youtube.com/@c...
    Facebook Page - / codethu
    #tuhoc #tuhoclaptrinh #tựhọcjava #tựhọclậptrình #tuhocjava #CodeThủ #CodeThu #codethu

ความคิดเห็น • 83

  • @annielisenguyen1800
    @annielisenguyen1800 ปีที่แล้ว +7

    Một trong những video về Generic dể hiểu nhất mà mình từng xem. Rất hay và mong bạn vẫn giữ style làm video như vậy hoặc còn hay hơn thế nửa. Rất cảm ơn bạn

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Mình cảm ơn bạn ủng hộ rất nhiều ❤️

  • @quangcaonhat5860
    @quangcaonhat5860 11 หลายเดือนก่อน +2

    Sịn thật sự, mình mới học code coi cuốn thật

  • @readingkoreanbook
    @readingkoreanbook ปีที่แล้ว +2

    Dễ hiểu hẳn ạ. Cảm ơn bạn rất nhiều

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn ủng hộ nha ❤️

  • @joseph_hieunguyen
    @joseph_hieunguyen 3 หลายเดือนก่อน

    đỉnh thật sự, coi cuốn kinh khủng. Cám ơn a nhiều

  • @nguyentuankhoi7367
    @nguyentuankhoi7367 9 หลายเดือนก่อน

    Ông nội này giảng dễ hiểu thật, giọng cũng dễ nghe ủng hộ 2 likes

  • @shyforlov9123
    @shyforlov9123 2 หลายเดือนก่อน

    ủng hộ bạn, mong bạn sẽ share kiến thức của bạn nhiều hơn nữa

  • @chens3207
    @chens3207 9 หลายเดือนก่อน

    hay quá anh ơi, mong sắp tới anh ra thêm nhiều video để giúp các bạn sinh viên học java dễ dàng hơn ạ

  • @SangTran-dp9th
    @SangTran-dp9th ปีที่แล้ว +1

    cảm ơn bạn, video rất hay ạ

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn ủng hộ nha ❤️

  • @buihuunghiafplhcm8167
    @buihuunghiafplhcm8167 ปีที่แล้ว +1

    Video của anh dễ hiểu hay và hài nữa

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn ủng hộ mình nha ❤️

  • @numberninenam8656
    @numberninenam8656 ปีที่แล้ว +1

    Quá tuyệt vời, cảm ơn anh vì kiến thức rất bổ ích

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Thanks bạn đã ủng hộ mình :)

  • @ychi8888
    @ychi8888 8 หลายเดือนก่อน

    Rất hay và dễ hiểu, mong bạn làm với Angular + TypeScript

  • @Ashley-nh4ez
    @Ashley-nh4ez 11 หลายเดือนก่อน

    Video rất bổ ích, cảm ơn bạn!

  • @truongvannhan954
    @truongvannhan954 ปีที่แล้ว

    đơn giản & dễ hiểu . thank you

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn ủng hộ ❤️

  • @TrânPhan-f3y
    @TrânPhan-f3y 9 หลายเดือนก่อน

    hay lắm ạ, em cảm ơn anh nhiều ạ

  • @babinhtran7499
    @babinhtran7499 ปีที่แล้ว

    ủng hộ bạn làm thêm nhiều video về OOP và thêm nhiều mảng khác

  • @congquantran7714
    @congquantran7714 ปีที่แล้ว

    Mặt trời chân lí chói qua tim😂

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Hihi cảm ơn bạn ủng hộ nha 😊

  • @nguyenthucchien6492
    @nguyenthucchien6492 4 หลายเดือนก่อน

    Quá hay. RESPECT

  • @SangNguyen-ih4fy
    @SangNguyen-ih4fy 11 หลายเดือนก่อน

    Tuyệt vời quá a ơi !!!

  • @fancaothukiemtien5994
    @fancaothukiemtien5994 ปีที่แล้ว +2

    Hay quá anh ơi. Mong anh ra video phân tích sự khác nhau giữa interface với abstract đi anh..

    • @CodeThu
      @CodeThu  ปีที่แล้ว +1

      Thanks bạn đã ủng hộ. Mình sẽ làm video bạn yêu cầu trong thời gian tới :)

  • @trihahuy3653
    @trihahuy3653 ปีที่แล้ว

    hay lắm, tiếp tục nhé a trai

    • @CodeThu
      @CodeThu  ปีที่แล้ว +1

      Thanks bạn ủng hộ nha :)

  • @nhatlg
    @nhatlg ปีที่แล้ว

    Xin cảm ơn vì video rất dễ hiểu. Tuy nhiên phần hoạt náo chèn thêm cứ như jump scare ấy. Có thể chỉnh âm lượng cho đồng đều với phần bài giảng thì đỡ giật mình.

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn ủng hộ và góp ý. Mình sẽ khắc phục trong những video tiếp theo 🙏

  • @binhnguyenvan641
    @binhnguyenvan641 ปีที่แล้ว

    video hay quá. Cảm ơn anh

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Càm ơn bạn ủng hộ nha ❤️

  • @thanhganhteam8336
    @thanhganhteam8336 ปีที่แล้ว

    Quá là đỉnh và dễ hiểu luôn

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn ủng hộ nha ❤️

  • @nguyenbatrungfplhcm5070
    @nguyenbatrungfplhcm5070 ปีที่แล้ว +1

    anh làm về cái wrapper đi ạ. Kiểu như
    so sánh double với Double í

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn góp ý nha. Mình sẽ nghiên cứu làm về wrapper 🙌

  • @YOUNGHOIQUAN
    @YOUNGHOIQUAN ปีที่แล้ว

    Cảm ơn bạn nhiều

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn ủng hộ ❤️

  • @Gatetan123
    @Gatetan123 ปีที่แล้ว

    cảm ơn bạn, rất dễ hiểu

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Mình cảm ơn bạn ủng hộ nha ❤️

  • @JavaDev9661
    @JavaDev9661 ปีที่แล้ว

    sắp đi phỏng vấn lại ngồi cày lại core haha, thank anh chủ kênh nhé

    • @CodeThu
      @CodeThu  ปีที่แล้ว +1

      Hihi cảm ơn bạn ủng hộ nha. Mình chúc bạn gặp nhiều may mắn trong cuộc phỏng vấn sắp đến ❤️

  • @hplat-vku
    @hplat-vku 6 หลายเดือนก่อน

    dễ hiểu quá a

  • @trungnghiaphamang6075
    @trungnghiaphamang6075 7 หลายเดือนก่อน +2

    sự khác nhau giữa T extends và T super là gì vậy a?

    • @yifangqk
      @yifangqk หลายเดือนก่อน

      T extends Number, có nghĩa là T phải là lớp con của Number,
      T super Number, có nghĩa là T là cha của Number,
      ko biết có phải ko =))

  • @phammanhhung9733
    @phammanhhung9733 7 หลายเดือนก่อน

    List bài giảng của bạn công phu như vậy không biết có phần nào nói về đa luồng không nhỉ :)))

  • @nguyentienduy1638
    @nguyentienduy1638 ปีที่แล้ว

    Hay quá anh ơi

  • @nhattrinh8823
    @nhattrinh8823 ปีที่แล้ว

    hay quá a ơi, e bắn luôn rồi

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn ủng hộ ❤️

  • @ilikeyacutg9722
    @ilikeyacutg9722 หลายเดือนก่อน

    8:57
    "yes!" 👍
    "!yes" 💀

  • @nguyentaitue4596
    @nguyentaitue4596 11 หลายเดือนก่อน

    Hay anh ơiii

  • @giangxuan4494
    @giangxuan4494 5 หลายเดือนก่อน

    yêu a.

  • @toanlemanh1101
    @toanlemanh1101 ปีที่แล้ว +1

    a cho em hỏi là tại sao a lại dùng wrapper - Integer thay vì int tại phần instance variable ? Tiện a có thể chia sẻ về ưu nhược điểm của việc sử dụng wrapper class ko ?

    • @CodeThu
      @CodeThu  ปีที่แล้ว +3

      Cảm ơn bạn để lại câu hỏi nha. Trong Java, Generics được thiết kế để hỗ trợ kiểu dữ liệu động trong khi vẫn bảo đảm tính toàn vẹn của kiểu dữ liệu. Các kiểu dữ liệu nguyên thủy như int, double, float... không được hỗ trợ bởi Generics vì chúng là các kiểu dữ liệu cơ bản và không phải là các đối tượng.
      Thay vào đó, mình cần sử dụng các lớp bao đóng (wrapper class) như Integer, Double, Float... để đại diện cho các kiểu dữ liệu nguyên thủy. Các lớp bao đóng này là các lớp đối tượng được cung cấp bởi Java để bao gồm các kiểu dữ liệu nguyên thủy, cho phép mình sử dụng chúng trong các Generic class hoặc method.
      Việc sử dụng các lớp bao đóng cũng có thể giúp tăng khả năng tương thích của code của mình vì các kiểu dữ liệu bao đóng này có thể được chuyển đổi thành các kiểu dữ liệu nguyên thủy tương ứng một cách tự động (autoboxing). Ví dụ, khi mình truyền một đối tượng Integer vào một phương thức yêu cầu một tham số kiểu int, Java sẽ tự động chuyển đổi đối tượng Integer thành một giá trị kiểu int.
      Vì vậy, để sử dụng Generics trong Java, mình cần sử dụng các lớp bao đóng như Integer, Double, Float thay vì các kiểu dữ liệu nguyên thủy.
      Mình hy vọng mình giải thích được cẩu hỏi của bạn. Nếu bạn có câu hỏi nào, đừng ngần ngại comment mình sẽ trả lời trong thời gian sớm nhất. Cảm ơn bạn nhiều :)

    • @nhattrinh8823
      @nhattrinh8823 ปีที่แล้ว

      @@CodeThu vậy các kiểu dữ liệu Integer, Double,... thuộc wrapper class cũng là đối tượng hả anh. Các kiểu dữ liệu bao đóng có thể tự động chuyển đổi thành các kiểu dữ liệu nguyên thủy tương ứng, vậy có phải tất cả các trường hợp sử dụng kiểu dữ liệu nguyên thủy trong java đều có thể thay thế bằng kiểu wrapper class không ạ.
      Cho em hỏi thêm 1 câu nữa là ngoài Generics, còn những kĩ thuật nào bắt buộc phải dùng wrapper class nữa không ạ. em cảm ơn

    • @CodeThu
      @CodeThu  ปีที่แล้ว +1

      @@nhattrinh8823 chào bạn, cảm ơn bạn ủng hộ và để lại bình luộn nha. Đúng vậy bạn, các kiểu dữ liệu Integer, Double,... thuộc wrapper class đều là đối tượng trong Java. Các kiểu dữ liệu bao đóng này có thể tự động chuyển đổi thành các kiểu dữ liệu nguyên thủy tương ứng, điều này gọi là autoboxing và unboxing.
      Về câu hỏi thứ hai của bạn, ngoài Generics, wrapper class cũng được sử dụng trong các tình huống khác nhau. Một số trường hợp phổ biến mà bạn cần sử dụng wrapper class là khi làm việc với collections (danh sách), các cấu trúc dữ liệu phức tạp như List, Map, hoặc Set, và khi cần truyền kiểu dữ liệu nguyên thủy như đối tượng trong các phương thức.
      Mình có video về Wrapper Class, mình đảm bảo sẽ giải thích hết thắc mắc của bạn 😁th-cam.com/video/LShiqO7k-gA/w-d-xo.html

    • @nhattrinh8823
      @nhattrinh8823 ปีที่แล้ว

      @@CodeThu thank anh

  • @anhhuyis7678
    @anhhuyis7678 7 หลายเดือนก่อน

    á đù , kiến thức đã được tiếp thu

  • @nguyentienminh0710
    @nguyentienminh0710 2 หลายเดือนก่อน

    Anh dngf theme gì cho intellij vậy ạ

  • @angtran4119
    @angtran4119 ปีที่แล้ว

    Hic anh có thể đề xuất giúp em 1 vài kênh TH-cam dạy full java được ko ạ, anh giải thích 1 số khái niệm dễ hiểu quá, e năm nhất cx hơi hiểu hiểu, tại năm 2 e học java rồi sợ quá 😢😢

    • @CodeThu
      @CodeThu  ปีที่แล้ว +1

      Cảm ơn bạn ủng hộ nha. Bạn đừng lo lắng nhiều, thật sự các khái niệm Java không khó hiểu lắm đâu. Mình sẽ cố gắng giải thích hết các khái niệm trong Java một cách dễ hiểu nhất 🤝

  • @Nam_704
    @Nam_704 ปีที่แล้ว

    hay qớ

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn ủng hộ nha ❤️

  • @nhutanhtran1738
    @nhutanhtran1738 11 หลายเดือนก่อน

    sao lại dùng lớp bao thế anh , thường code e toàn dùng dạng nguyên thủy không hà :V

  • @lesy4509
    @lesy4509 ปีที่แล้ว

    bạn làm dependency injection đi

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Cảm ơn bạn theo dõi vào để lại comment nha. Mình sẽ làm về đề tài này trong thời gian sớm nhất ❤️

  • @hieuo9323
    @hieuo9323 ปีที่แล้ว

    Phút thứ 14:10 ở phần khởi tạo PersonString,lớp person có T extends Number nên PersonString phải chuyển sang Integer cho thuộc kiểu số vậy vẫn muốn nó thuộc kiểu String mà vẫn giới hạn đc kiểu giá trị truyền vào thì s a nhỉ

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Chào bạn, câu hỏi của bạn rất thú vị. Nếu mình muốn T chỉ giới hạn cho String thì mình phải để T extends String. Nếu như vậy thì mình đảm bào kiểu dữ liệu truyền vào sẽ là String hoặc những lớp con của String. Mình hy vọng mình trả lời được câu hỏi của bạn, nếu bạn có câu hỏi nào thì để lại comment nha. Cảm ơn bạn nhiều ❤️

  • @tamtrung6172
    @tamtrung6172 ปีที่แล้ว

    Đây có được gọi overload không vậy anh

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Chào bạn, cảm ơn bạn ủng hộ nha. Generic không được gọi là overload bạn. Tại overload hay nạp chồng là khi một lớp có nhiều phương thức cũng tên nhưng khác nhau về số lượng tham số, kiểu dữ liệu của các tham số hoặc cả hai. Dưới đây là link video về overload bạn có thể tham khảo nha 😊
      th-cam.com/video/Yxko94A2gQc/w-d-xo.html

  • @duytam6597
    @duytam6597 ปีที่แล้ว

    generic methods cũng giới hạn tương tự như generics class phải k ad?

    • @CodeThu
      @CodeThu  ปีที่แล้ว +1

      Đúng nha bạn, khi bạn sử dụng generic methods, bạn có thể giới hạn kiểu dữ liệu của tham số bằng cách sử dụng từ khóa `extends` để chỉ định ràng buộc kiểu (type bounds).
      Khi bạn sử dụng `T extends Type`, bạn đang ràng buộc kiểu dữ liệu của tham số `T` phải là một lớp hoặc giao diện mà mở rộng (extends) hoặc triển khai (implements) từ `Type` hoặc một lớp con của `Type`. Và generics class cũng hỗ trợ việc giới hạn kiểu dữ liệu bằng ràng buộc kiểu luôn.
      Cảm ơn bạn ủng hộ nha ❤️

    • @duytam6597
      @duytam6597 ปีที่แล้ว

      @@CodeThu cảm ơn ad ạ, hihi. chúc ad sức khỏe tốt heng

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      @@duytam6597 cảm ơn bạn nha.

  • @phamcongtoan1399
    @phamcongtoan1399 ปีที่แล้ว

    anh cho em hỏi có extends các class dc k z a 14:00

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Chào bạn, bạn hoàn toàn có thể tạo một lớp mà mở rộng một lớp generic. Tuy nhiên, khi bạn mở rộng lớp generic, bạn cần phải chỉ định các kiểu dữ liệu thực tế cho các tham số kiểu của lớp generic mà bạn đang kế thừa. Nếu không, lớp của bạn cũng phải là một lớp generic với cùng các tham số kiểu đó 😊

    • @phamcongtoan1399
      @phamcongtoan1399 ปีที่แล้ว

      ​@@CodeThuý e là kiểu như T có extends các lớp đối tượng(Cat,Dog...) không á anh

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      @@phamcongtoan1399 sorry bạn mình hiểu nhầm ý bạn một xíu. Câu trả lời ngắn cho câu hỏi của bạn là T có thể extends lớp nào cũng được nha bạn.
      Việc sử dụng từ khoá 'extends' trong Generics không chỉ giới hạn kiểu của T, mà còn giúp mình chắc chắn rằng T sẽ có tất cả các phương thức và thuộc tính của lớp hoặc interface mà T 'extends' từ đó.
      Điều này đồng nghĩa với việc mình có thể gọi các phương thức của lớp hoặc interface đó mà không cần phải ép kiểu. Khi bạn sử dụng cú pháp "T extends Dog", bạn đang nói rằng T có thể là bất kỳ lớp nào kế thừa từ Dog hoặc Dog nếu Dog là một interface. Nói cách khác, T có thể là lớp Dog hoặc một lớp con của Dog.

  • @VietTran-ro2xn
    @VietTran-ro2xn ปีที่แล้ว

    kho báu zootube

    • @CodeThu
      @CodeThu  ปีที่แล้ว

      Hihi cảm ơn bạn ủng hộ nha ❤️

  • @thanhtamgiap3408
    @thanhtamgiap3408 3 หลายเดือนก่อน

    nhét mấy meme dzo coi khó chịu thật sự, vừa ồn vừa mất tập trung, cái người xem cần sự tập trung vào nội dung

  • @Patrick_watterson
    @Patrick_watterson 3 หลายเดือนก่อน

    vừa kiếm được kênh ôn tập kiến thức lại để đỡ quên chất lượng như này mà kênh lại ngừng hoạt động faowifjoawehfoawfawoefjds đời éo le vkl ................