КомпьютерПрограмчлалын

Java женерик: тодорхойлолт, арга

Java хэлний төрх эхлэн өөрчлөлт, эргэлзээгүй өөрийн чиг үүргийн эерэг мөчүүдийг авчирсан нь маш их хийгдсэн. Эдгээр томоохон өөрчлөлтийн нэг нь Java ерөнхий болон ерөнхийлсөн нэвтрүүлэх юм. Энэ боломж нь зөвхөн хэлний илүү уян хатан, олон талын, бас өгөгдлийн төрлийг авчрах хувьд маш найдвартай хийж чадахгүй.

баримт Java ерөнхий кодыг компанийн ерөнхий танилцуулахаас өмнө нь зөвхөн төрлийн лавлагаа Object хувьд, бий болох гэж байна. Ийм холбоосууд ямар нэг зүйлийг даалгасан болно. Эцсийн эцэст, Java-д анги далд Object анги өв залгамжлагчид юм. Гэсэн хэдий ч энэ арга нь зорилтот төрөл Object-аас объектын илэрхий хөрвүүлэлтийн аюулгүй байдлын төрлийн холбоотой олон алдааны боломжит эх үүсвэр юм. ерөнхийлөн ашиглаж байгаа үед л төрүүлж, алдааг нь ч гэсэн боломж арилгах, далд автоматаар гүйцэтгэдэг.

Java женерик: тайлбар болон жишээ

АНУ-ын доорх зурагт тогтмол ангид тугээмэл хэрэглэх нь энгийн жишээг авч үзье. Тэгээд дараа нь бүх subtleties болон Java ерөнхий ын нарийн ялгааг нарийвчлан шалгалт үргэлжлүүлье.

нь анги мэдэгдэл Pair тохиолддог байдлаар анхаарал хандуулаарай. Нэн даруй анги нэрээр, нээлттэй өнцөг хаалт, захидал төвдөөр заасан Энэ нь тодорхой төрлийн орлуулж болно энэ ангийн төл бий болгох үйл явц юм дүүргэгч нь нэг төрлийн юм. ХОС obj = шинэ хос () дараах байдлаар бололтой. Энэ оронд T аливаа захидал, T, V, эсвэл Е хэрэглэх нь дүрмийн дагуу зааж, харин болно гэдгийг тэмдэглэх нь зүйтэй

Тайлбар: Java найм дахь хувилбар эхлэн байгуулагч лавлах өнцөг хаалт зарласан хоосон орхиж болно үед зорилтот төрөл тодорхойлсон. Дээрх жишээ гэж бичигдэх боломжтой Тэгэхээр: хосын obj = шинэ хос <> ().

Анги ийм замаар, дараа нь түүний биед оронд салбар, холбоосууд, та тэр захидал ашиглаж болно аргаар буцаж объектын тодорхой төрлийн зарласан үед. T оноос хойш үүсгэх үед ангийн обьект нь тухайн төрөл, энэ тохиолдолд эхний болон хоёр дахь талбарууд төрөл бүхэл тоо байх болно солигдсон байна.

нэмэлт өгөгдлүүд болон firstItem secondItem нь логик дараа нь бас төрөл бүхэл тоо, эсвэл Ангилал байх ёстой зохих байгуулагч гэж нэрлэдэг. Та объект үүсгэх үед тодорхой ямар ялгаатай юм өгөгдлийн төрлийг дамжуулах оролдвол, хөрвүүлэгч энэ алдааг бүү байх болно. Тиймээс нэмэлт өгөгдлүүд байгуулагч обьект болгон дараах байдлаар олгоно: Pair obj = шинэ хос <> (шинэ Integer (1), шинэ Integer (2)). Мөн нэмэлт өгөгдлүүд болон арга setFirst setSecond хамаарна. Мөн та магадгүй, арга getFirst getSecond таасан шүү дээ, төрөл бүхэл утгыг буцаах болно гэж.

хэд хэдэн параметрүүд зэрэг төрлийн ерөнхийлж

ерөнхий ангид нь мөн төрөл нь таслалаар нь өнцөг хаалтанд тогтоосон олон параметрүүдийг зарлаж болно. ХОС анги доор үзүүлсэн байгаа тохиолдолд өөр шинэчлэгдсэн.

Таны харж байгаагаар та өнцөг хаалтад энэ ангийн төл үүсгэх үед параметрийн талаар төрлийн ижил тооны зааж өгөх ёстой. Хэрэв та газрын зураг гэх мэт өгөгдлийн бүтэц нь энэ төрлийн мэддэг бол та яг ижил зарчмыг ашигладаг болохыг харж болно. утгын төрлийг - Тэнд Эхний нэмэлт өгөгдөл нь түлхүүр төрлийг, хоёр дахь тогтооно. Энэ нь дамжуулсан төрлийн объект нэмэлт өгөгдлүүд нь давхцаж болзошгүй үед гэдгийг тэмдэглэх нь зүйтэй. Жишээ нь, дараах зар ХОС зэрэг жишээ нь туйлын зөв юм: ХОС obj.

ерөнхийлсөн зарим онцлог

цаашид явах өмнө Java хөрвүүлэгч анги хос янз бүрийн хувилбаруудыг бий болгох биш гэдгийг тэмдэглэх нь зүйтэй. Ер нь, ерөнхий төрөл бүхий л мэдээллийг цуглуулах явцад устгагдсан байна. Харин үүний оронд та ХОС ангийн тусгай хувилбарыг бий болгох, зохих төрлийн авчирдаг. Гэсэн хэдий ч, хөтөлбөрт тэнд ангийн зөвхөн ерөнхий хувилбар нь одоо ч байна. Энэ үйл явц нь Java ерөнхий цэвэрлэх төрөл гэж нэрлэдэг.

чухал цэг анхаарна уу. Мөн Java ерөнхий ангийн янз бүрийн хувилбаруудад холбоосууд нэг ижил обьект зааж чадахгүй. ХОС obj1 болон ХОС <Давхар> obj2: Энэ бол бид хоёр холбоосыг байна гэж бодъё. Үүний үр дүнд, шугам obj1 = obj2 алдаа. аль аль нь хувьсагч төрөл ХОС байдаг хэдий ч, объект нь тэд илгээх нь өөр өөр байдаг. Энэ нь Java ерөнхий дахь аюулгүй байдлын төрлийн нэг гол жишээ юм.

ерөнхий анги хязгаарлалт

Энэ нь зүйлсийг нийтлэг төрлийн лавлагаа зөвхөн хэрэглэж болно гэдгийг мэдэх нь чухал юм гэдгийг параметрүүдийг ерөнхий анги Java аргументыг ангийн төрөл байх ёстой туулах явдал юм. Жишээ нь: гэх мэт Эдгээр энгийн төрөл, хоёр эсвэл урт, шилжүүлж болохгүй. Өөрөөр хэлбэл, дараах мөрийг ХОС анги мэдэгдэл зөвшөөрөгдөөгүй байна: ХОС obj. Гэсэн хэдий ч, энэ хязгаарлалт нь биш харин ноцтой асуудал, балар эртний төрөл бүрийн хувьд харгалзах Java гүйцэтгэл хялбаршуулагч анги байдаг юм байна. Дархан ярьж, анги ХОС та бүхэл болон Бүүлийн үнэ цэнэ avtoupakovka бүхнийг та хийдэг хайрцаглах хүсэж байгаа бол: ХОС obj = шинэ хос <> (25 үнэн).

Өөр нэг ноцтой хязгаарлалт параметр төрлийн нэг жишээ бий болгох чадваргүй юм. Жишээ нь, дараах мөрийг эмхэтгэл алдаанд хүргэж байна: T анхны = шинэ T (). маргаан бүрэн ангид, эсвэл хийсвэр, эсвэл бүр интерфэйсийг өнгөрч байгаа эсэхийг та урьдчилан мэдэхгүй байна, учир нь энэ нь тодорхой байна. ижил массивууд бий болгох явдаг.

хязгаарлагдмал төрөл

Нэлээд ихэвчлэн ерөнхий анги Java нь аргументээр болно төрлийн жагсаалтыг хязгаарлах шаардлагатай үед тохиолдол байдаг. бидний анги хосын бид тэдэн дээр цаашид математикийн үйл ажиллагаа нь зөвхөн тоон утгуудыг хайрцаглах хүсч байна гэж үзье. Үүнийг хийхийн тулд бид параметр төрлийн дээд хязгаарыг тодорхойлох хэрэгтэй. Энэ нь өнцөг хаалтанд онд батлагдсан бүх аргумент өвлөн нь өвөг зар аргаар ойлгосон байна. зэрэг ХОС : Энэ нь дараах байдлаар харагдах болно. Ийм байдлаар, хөрвүүлэгч олдог гэсэн параметр нь Т орлуулж оронд болно, эсвэл тоо анги буюу түүний дэд анги нэг юм.

Энэ бол нийтлэг хүлээн авах юм. Ийм хязгаарлалт нь ихэвчлэн нэг, нэг ангид нийцтэй төрлийн параметрүүдийг хангахын тулд ашиглаж байна. Манай анги хосын жишээг авч үзье: анги ХОС . Энд бид төрөл Т дур мэдэн байж болно хөрвүүлэгч хэлж, V төрлийн Т төрөл, түүний дэд анги нэг нь аль байх ёстой.

"Доод" хязгаарлах яг ижил арга зам юм, харин үгийг үг супер ид шид л байдаг. Энэ нь ангилна зэрэг ХОС оронд T нь ArrayList, эсвэл ямар нэгэн анги буюу интерфэйс нь өвлөн эсвэл орлуулж болно гэж хэлсэн байна.

Generic Java арга байгуулагч

Java онд зүйлсийг нийтлэг нь зөвхөн ангийн бас аргуудыг хэрэглэж болох боловч. Жишээ нь, ерөнхий арга нь тогтмол ангид зарлаж болно.

Дээрх зургаас харахад, зар сурталчилгааны ерөнхий арга нь ямар ч том наймаа юм. аргын буцах төрөл өнцөг хаалт тавьж, тэдний дотор төрөл параметрүүдийг зааж өмнө хангалттай.

бүх зүйл байгуулагч нь адил хийж байгаа бол:

Энэ тохиолдолд өнцөг хаалт, дизайнер нэрээр өмнө нь тавьсан тэр ямар ч хариулт утга учир. аль аль нь хөтөлбөрийн үр дүн байх болно:

бүхэл тоо

String

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 mn.delachieve.com. Theme powered by WordPress.