ຄອມພິວເຕີ້, Programming
Java Generics: ລາຍລະອຽດແລະວິທີການ
ນັບຕັ້ງແຕ່ການເລີ່ມຕົ້ນຂອງຕົນ, ພາສາ Java ໄດ້ມີການປ່ຽນແປງຫຼາຍ, ເຊິ່ງ, undoubtedly, ໄດ້ນໍາເອົາລັກສະນະໃນທາງບວກກັບການທໍາງານຂອງຕົນ. ຫນຶ່ງໃນການປ່ຽນແປງທີ່ສໍາຄັນຄືການນໍາໃຊ້ Java Generic ຫຼື generalization. ຟັງຊັນນີ້ເຮັດໃຫ້ພາສາບໍ່ພຽງແຕ່ມີຄວາມຍືດຫຍຸ່ນແລະມີປະໂຍດ, ແຕ່ຍັງມີຄວາມປອດໄພຫລາຍຂຶ້ນໃນການຫຼຸດຜ່ອນປະເພດຂໍ້ມູນ.
ຄວາມຈິງແລ້ວແມ່ນວ່າກ່ອນການນໍາໃຊ້ generics, ລະຫັດທົ່ວໄປໃນ Java ສາມາດສ້າງໄດ້, ມີພຽງແຕ່ມີການເຊື່ອມຕໍ່ຂອງ Object object. ການເຊື່ອມຕໍ່ດັ່ງກ່າວສາມາດຖືກມອບຫມາຍໃຫ້ກັບຈຸດປະສົງໃດຫນຶ່ງ. ຫຼັງຈາກທັງຫມົດ, ທຸກຊັ້ນຮຽນໃນ Java ແມ່ນ descendants implicit ຂອງ class Object. ຢ່າງໃດກໍຕາມ, ວິທີການນີ້ແມ່ນແຫຼ່ງທີ່ເປັນໄປໄດ້ຂອງຄວາມຜິດພາດຄວາມປອດໄພປະເພດຈໍານວນຫຼາຍເມື່ອທ່ານອະທິບາຍຢ່າງຊັດເຈນການປ່ຽນວັດຖຸຈາກຈຸດປະສົງກັບປະເພດເປົ້າຫມາຍ. ໃນເວລາທີ່ generalizations ຖືກນໍາໃຊ້, ທັງຫມົດ casts ແມ່ນປະຕິບັດ implicitly ແລະອັດຕະໂນມັດ, ເຊິ່ງ excludes ເຖິງແມ່ນວ່າຄວາມເປັນໄປໄດ້ຂອງຄວາມຜິດພາດ.
Java Generics: ຄໍາອະທິບາຍແລະຕົວຢ່າງ
ໃຫ້ພວກເຮົາພິຈາລະນາຕົວຢ່າງທີ່ງ່າຍດາຍກ່ຽວກັບການນໍາໃຊ້ທົ່ວໄປໄປຫາຫ້ອງຮຽນປົກກະຕິໃນຮູບຂ້າງລຸ່ມນີ້. ແລະພຽງແຕ່ຫຼັງຈາກນັ້ນພວກເຮົາຈະສືບຕໍ່ການກວດສອບລະອຽດຂອງ subtleties ທັງຫມົດແລະ nuances ຂອງ Java Generic.
ສັງເກດວິທີການຮຽນ Pair ຖືກປະກາດວ່າ. ຫຼັງຈາກຊື່ຂອງຫ້ອງຮຽນ, ວົງເລີ້ມມຸມແມ່ນເປີດ, ທີ່ຕົວອັກສອນ T ຖືກສະແດງ. ມັນເປັນຊະນິດທີ່ບ່ອນທີ່ຈະຖືກແທນທີ່ດ້ວຍປະເພດສະເພາະເມື່ອສ້າງຕົວຢ່າງຂອງຊັ້ນນີ້. ມັນຄ້າຍຄືນີ້: Pair
ຫມາຍເຫດ: ເລີ່ມຕົ້ນດ້ວຍ Java version eighth, ກໍານົດປະເພດເປົ້າຫມາຍໃນເວລາທີ່ເຊື່ອມໂຍງຈະຖືກປະກາດ, ທ່ານສາມາດປ່ອຍວົງເລັບມຸມໃນ constructor ຫວ່າງເປົ່າ. ດັ່ງນັ້ນຕົວຢ່າງຂ້າງຕົ້ນສາມາດຂຽນຄືນໃຫມ່ດັ່ງຕໍ່ໄປນີ້: Pair
ໃນເວລາທີ່ຫ້ອງຮຽນໄດ້ຖືກປະກາດທາງນີ້, ຫຼັງຈາກນັ້ນໃນຮ່າງກາຍນີ້, ແທນທີ່ຈະປະເພດຂອງທົ່ງນາ, ການອ້າງອິງແລະວິທີການທີ່ສົ່ງຄືນໂດຍວິທີການ, ທ່ານສາມາດໃຊ້ຕົວອັກສອນນີ້. ເນື່ອງຈາກວ່າ T ຖືກແທນທີ່ດ້ວຍປະເພດສະເພາະເມື່ອສ້າງວັດຖຸຊັ້ນ, ທົ່ງທໍາອິດແລະທີສອງໃນກໍລະນີນີ້ຈະເປັນປະເພດ Integer.
ການປະຕິບັດຕາມເຫດຜົນ, ການໂຕ້ຖຽງ firstItem ແລະ secondItem, ສົ່ງໄປຫາຕົວສ້າງທີ່ສອດຄ້ອງກັນ, ຍັງຕ້ອງເປັນປະເພດ Integer ຫຼືລະບົບຍ່ອຍຂອງມັນ. ຖ້າທ່ານພະຍາຍາມຖ່າຍທອດຂໍ້ມູນທີ່ແຕກຕ່າງຈາກສິ່ງທີ່ໄດ້ກໍານົດໄວ້ໃນເວລາທີ່ຈຸດປະສົງຖືກສ້າງ, compiler ຈະບໍ່ຂ້າມຂໍ້ຜິດພາດນີ້. ດັ່ງນັ້ນ, ຜູ້ສ້າງທີ່ມີການໂຕ້ຖຽງໃນເວລາທີ່ການສ້າງວັດຖຸຈະມີຮູບແບບດັ່ງຕໍ່ໄປນີ້: ຄູ່
ຊັ້ນຮຽນທົ່ວໄປທີ່ມີພາລາມິເຕີປະເພດຈໍານວນຫນຶ່ງ
ໃນຊັ້ນຮຽນທົ່ວໄປ, ທ່ານຍັງສາມາດປະກາດຕົວກໍານົດການປະເພດຈໍານວນຫນຶ່ງທີ່ຖືກກໍານົດໄວ້ໃນວົງເລີ້ມມຸມ, ແຍກໂດຍໂຄຣມ. ຊັ້ນຮຽນຄູ່ສໍາລັບກໍລະນີນີ້ແມ່ນສະແດງຢູ່ໃນຮູບຂ້າງລຸ່ມນີ້.
ເມື່ອທ່ານສາມາດເບິ່ງເຫັນໄດ້, ເມື່ອສ້າງຕົວຢ່າງຂອງຫ້ອງດັ່ງກ່າວ, ຈໍານວນປະເພດດຽວກັນກັບພາລາມິຕິຄວນຈະຖືກກໍານົດໄວ້ໃນວົງເລີ້ມມຸມ. ຖ້າທ່ານຄຸ້ນເຄີຍກັບໂຄງສ້າງຂໍ້ມູນດັ່ງກ່າວເຊັ່ນແຜນທີ່, ຫຼັງຈາກນັ້ນທ່ານອາດສັງເກດເຫັນວ່າຫຼັກການດຽວກັນຖືກນໍາໃຊ້ຢູ່ທີ່ນັ້ນ. ມີ, ການໂຕ້ຖຽງຄັ້ງທໍາອິດກໍານົດຊະນິດຂອງຄີ, ແລະຄັ້ງທີສອງກໍານົດປະເພດຂອງມູນຄ່າ. ມັນຄວນຈະສັງເກດວ່າປະເພດຂອງການໂຕ້ຖຽງຜ່ານການສ້າງວັດຖຸສາມາດຄືກັນ. ດັ່ງນັ້ນ, ການປະກາດດັ່ງຕໍ່ໄປນີ້ຂອງຕົວຢ່າງຂອງຫ້ອງຄູ່ແມ່ນແທ້ໆຖືກຕ້ອງ: ຄູ່
ບາງລັກສະນະຂອງການທົ່ວໄປ
ກ່ອນທີ່ຈະດໍາເນີນການຕໍ່ໄປ, ຄວນສັງເກດວ່າຕົວປະກອບ Java ບໍ່ໄດ້ສ້າງລຸ້ນອື່ນໆຂອງຊັ້ນ Pair. ໃນຄວາມເປັນຈິງ, ໃນຂະບວນການລວບລວມ, ຂໍ້ມູນທັງຫມົດກ່ຽວກັບປະເພດທົ່ວໄປຈະຖືກລຶບອອກ. ແທນທີ່ຈະ, ປະເພດທີ່ສອດຄ້ອງກັນແມ່ນການໂຍນ, ການສ້າງສະບັບພິເສດຂອງຊັ້ນ Pair. ຢ່າງໃດກໍຕາມ, ໂຄງການຕົວມັນເອງຍັງມີສະບັບທົ່ວໄປດຽວຂອງຫ້ອງຮຽນນີ້. ຂະບວນການນີ້ຖືກເອີ້ນໃນການທໍາຄວາມສະອາດແບບ Java Generic.
ໃຫ້ສັງເກດເປັນຈຸດທີ່ສໍາຄັນ. ການເຊື່ອມໂຍງກັບສະບັບທີ່ແຕກຕ່າງກັນຂອງກຸ່ມ java ທົ່ວໄປດຽວກັນບໍ່ສາມາດຈຸດຫາວັດຖຸດຽວກັນ. ນັ້ນແມ່ນ, ໃຫ້ເວົ້າວ່າພວກເຮົາມີສອງລິງ: ຄູ່
ການຈໍາກັດ imposed ໃນຫ້ອງຮຽນທົ່ວໄປ
ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະຮູ້ວ່າ generalizations ສາມາດຖືກນໍາໃຊ້ກັບປະເພດອ້າງອີງ, ນັ້ນແມ່ນການໂຕ້ຖຽງຜ່ານການໂຕ້ຖຽງ java class ທົ່ວໄປຕ້ອງຈໍາເປັນປະເພດຂອງ class. ແບບງ່າຍໆດັ່ງກ່າວ, ເຊັ່ນວ່າ, ຄູ່ຫຼືຍາວ, ບໍ່ສາມາດຖືກສົ່ງຜ່ານ. ໃນຄໍາສັບຕ່າງໆອື່ນ, ເສັ້ນດັ່ງຕໍ່ໄປນີ້ຂອງການປະກາດຫ້ອງຄູ່ບໍ່ຖືກຕ້ອງ: Pair
ອີກຂໍ້ຈໍາກັດທີ່ຮ້າຍແຮງແມ່ນບໍ່ສາມາດສ້າງຕົວຢ່າງຂອງພາລາມິເຕີປະເພດ. ດັ່ງນັ້ນເສັ້ນດັ່ງຕໍ່ໄປນີ້ຈະເຮັດໃຫ້ເກີດຄວາມຜິດພາດການລວບລວມ: T first = new T (). ນີ້ແມ່ນຈະແຈ້ງ, ເນື່ອງຈາກວ່າທ່ານບໍ່ຮູ້ລ່ວງຫນ້າວ່າຈະມີການໂຕ້ຕອບຢ່າງເຕັມທີ່ຫຼືໂຕ້ຕອບບໍ່ມີຕົວຕົນ. ດຽວກັນສໍາລັບການສ້າງແຖວ.
ປະເພດຈໍາກັດ
ເລື້ອຍໆມີສະຖານະການໃນເວລາທີ່ຈໍາເປັນຕ້ອງຈໍາກັດບັນຊີລາຍຊື່ຂອງປະເພດທີ່ສາມາດຖືກສົ່ງຜ່ານເປັນການໂຕ້ຖຽງກັບຊັ້ນຮຽນທົ່ວໄປຂອງ java. ໃຫ້ສົມມຸດວ່າໃນຊັ້ນຮຽນ Pair ຂອງພວກເຮົາພວກເຮົາຕ້ອງການກໍານົດຄ່າຕົວເລກເທົ່ານັ້ນສໍາລັບການປະຕິບັດຄະນິດສາດຕໍ່ກັບເຂົາເຈົ້າ. ເພື່ອເຮັດສິ່ງນີ້, ພວກເຮົາຈໍາເປັນຕ້ອງກໍານົດຂອບເຂດເທິງຂອງພາລາມິເຕີປະເພດ. ນີ້ແມ່ນປະຕິບັດໂດຍໃຊ້ການປະກາດ superclass inherited ໂດຍການໂຕ້ຖຽງທັງຫມົດທີ່ຜ່ານໃນວົງເລີ້ມມຸມ. ມັນຈະມີລັກສະນະຄ້າຍຄືນີ້: Pair Class
ນີ້ແມ່ນວິທີການທົ່ວໄປ. ຂໍ້ຈໍາກັດດັ່ງກ່າວແມ່ນຖືກນໍາໃຊ້ເພື່ອຮັບປະກັນຄວາມສອດຄ່ອງຂອງພາລາມິເຕີໃນປະເພດດຽວກັນ. ພິຈາລະນາຕົວຢ່າງກ່ຽວກັບຫ້ອງຮຽນຄູ່ຂອງພວກເຮົາ: ຄູ່ປະເພດ
ການຈໍາກັດ "ຈາກຂ້າງລຸ່ມນີ້" ເກີດຂື້ນໃນແບບດຽວກັນ, ແຕ່ແທນທີ່ຈະຂະຫຍາຍຄໍາສັບ, ຄໍາສັບ Super ຖືກຂຽນໄວ້. ດັ່ງນັ້ນ, ການປະກາດຂອງຊັ້ນ Pair
Generics Java Methods and Constructors
ໃນ generalizations Java ສາມາດຖືກນໍາໃຊ້ບໍ່ພຽງແຕ່ກ່ຽວກັບການຮຽນ, ແຕ່ຍັງວິທີການ. ດັ່ງນັ້ນ, ວິທີທົ່ວໄປສາມາດໄດ້ຮັບການປະກາດໃນຊັ້ນຮຽນປົກກະຕິ.
ດັ່ງທີ່ທ່ານໄດ້ເຫັນໃນຮູບຂ້າງເທິງ, ບໍ່ມີຫຍັງທີ່ສັບສົນໃນການປະກາດວິທີການທົ່ວໄປ. ມັນແມ່ນພຽງພໍທີ່ຈະໃສ່ວົງເລີ້ມມຸມກ່ອນທີ່ຈະໃຊ້ວິທີການກັບຄືນມາແລະກໍານົດພາລາມິເຕີປະເພດຢູ່ໃນພວກມັນ.
ໃນກໍລະນີຂອງຜູ້ສ້າງ, ທຸກສິ່ງທຸກຢ່າງແມ່ນເຮັດໃນແບບດຽວກັນ:
ຕົວຍຶດສຽບໃນກໍລະນີນີ້ຖືກຈັດໃສ່ກ່ອນຊື່ຂອງຕົວສ້າງ, ເນື່ອງຈາກວ່າມັນບໍ່ກັບຄືນມູນຄ່າໃດໆ. ຜົນຂອງການເຮັດວຽກຂອງໂຄງການທັງສອງຈະແມ່ນ:
Integer
String
Similar articles
Trending Now