KomputerProgramming

Java Generics: pedaran jeung métode

Dimimitian ku penampilan bahasa Java geus undergone loba parobahan, nu undoubtedly dibawa moments positif di fungsionalitas na. Salah sahiji ieu parobahan signifikan nyaéta bubuka Java generik atanapi Generalisasi. fungsionalitas teu ukur nyieun basa beuki fléksibel tur serbaguna, tapi ogé loba aman tina segi bringing jenis data.

nyatana anu saméméh bubuka generics dina kode generik Java bisa dijieun, teu ukur dina watesan tipe rujukan Objék. Tumbu misalna bisa ditugaskeun obyék nanaon. Barina ogé, kelas di Java anu ahli waris kelas Objék implisit. Sanajan kitu, pendekatan ieu téh sumber potensi loba kasalahan patali jenis kaamanan di konversi katempo hiji barang tina Objék jeung tipe target. Lamun maké Generalisasi sadayana casts anu dipigawé implicitly tur otomatis, ngaleungitkeun malah potensi kasalahan.

Java Generics: pedaran tur conto

Hayu urang nganggap hiji conto basajan tina aplikasi tina generalisasi ka kelas biasa dina gambar di handap ieu. Lajeng lumangsungna hiji ujian nu detil rupa sagala subtleties na nuances of Java generik.

Nengetan cara nu deklarasi kelas lumangsung Pair. Langsung saatos nami kelas, kurung sudut buka, nu dituduhkeun hurup T. Ieu mangrupakeun jenis filler, anu aya dina prosés nyieun hiji conto tina kelas ieu bakal diganti ku jenis husus. Sigana kieu: Pair obj = Pair anyar (). Ieu kudu dicatet yén tinimbang T bisa nangtukeun aksara mana wae, tapi, saperti aturan, make T, V atanapi E.

Catetan: dimimitian ku versi kadalapan tina Java, nangtukeun jenis udagan nalika nyatakeun kurung sudut rujukan dina constructor bisa ditinggalkeun kosong. Jadi conto bisa dituliskeun salaku luhur: Pair obj = Pair anyar <> ().

Nalika kelas hiji dinyatakeun dina cara kitu, teras di awakna gaganti jenis husus tina sawah, Tumbu, objék dipulang ku metodeu anjeun bisa make hurup eta. Kusabab T nalika nyieun objék kelas diganti ku jenis nu tangtu, kahiji jeung kadua widang dina hal ieu bakal sahiji jenis integer.

Handap logika dalil na firstItem secondItem, dimaksud constructor luyu ogé kudu jadi sahiji jenis integer atawa kaasup. Lamun nyobian ngirimkeun hiji tipe data anu mah béda ti naon ieu dieusian nalika nyieun hiji obyék, compiler anu moal ngantep kasalahan ieu. Ku kituna, alesan constructor lamun hiji obyék bakal kieu: Pair obj = Pair anyar <> (integer anyar (1), integer anyar (2)). Sami manglaku ka dalil jeung métode setFirst setSecond. Tur anjeun geus meureun ditebak, métode getFirst getSecond tur bakal balik ajén tipe integer.

Digeneralisasi kalayan jenis kelas sababaraha parameter

Dina kelas generalized ogé bisa dibewarakeun sababaraha parameter tina tipe nu disetél dina kurung sudut jeung koma. Redesigned ku hal kelas Pair geus dibere handap.

Salaku bisa ningali, mun anjeun nyieun hiji conto tina kelas ieu kurung sudut kedah nunjukkeun jumlah anu sarua tina jenis salaku parameter. Mun anjeun wawuh jeung tipe ieu struktur data sakumaha Peta a, anjeun tiasa ningali yen eta perkara migunakeun persis prinsip nu sarua. Aya, argumen munggaran hususna tipe konci, sarta kadua - tipe nilai. Ieu kudu dicatet yén jenis dikirimkeun nalika hiji alesan obyék bisa tumpang tindih. Contona, dina ad di handap kelas conto Pair kacida bener: Pair obj.

Sababaraha fitur of Generalisasi

Saméméh bade salajengna, éta kudu dicatet yén kompiler Java henteu nyieun versi béda ti Pair kelas. Kanyataanna, dina prosés compiling hiji tipe generalized sakabeh informasi nu geus dihapus. Gantina, mawa jenis luyu, nyieun versi husus tina kelas Pair. Sanajan kitu, dina program nu aya kénéh ngan versi generik kelas. Proses ieu disebut ngaranggitkeun di Java tipe beberesih generik.

Catetan hiji titik penting. Tumbu ka versi béda ti kelas generik jawa sami teu tiasa nunjuk ka hiji jeung objék anu sarua. Nyaeta, anggap urang gaduh dua Tumbu: Pair obj1 na Pair obj2. Akibatna, dina garis obj1 = obj2 kasalahan. Sanajan duanana variabel anu tina jenis Pair , objék nu aranjeunna ningali, anu béda. Ieu conto prima sahiji jenis kaamanan di Jawa generik.

Larangan dina kelas generik

Kadé uninga yen Generalisasi bisa dilarapkeun ukur keur nuduhkeun jenis, nyaeta maot parameter generik kelas jawa argumen kedah janten tipe kelas. Ieu jenis basajan, kayaning, e.g., ganda atawa panjang, teu bisa ditransfer. Dina basa sejen, garis handap Pair kelas deklarasi teu diwenangkeun: Pair obj. Sanajan kitu, watesan ieu teu masalah serius, sakumaha aya hiji kelas wrapper Java saluyu keur masing-masing tipe primitif. Mastikeun diomongkeun, lamun Pair kelas rék encapsulate hiji integer sarta Boolean nilai avtoupakovka teu sagalana pikeun anjeun: Pair obj = Pair anyar <> (25 leres).

watesan serius sejen teh henteu mampuh nyieun conto tina tipe parameter. Contona, garis handap baris ngabalukarkeun kasalahan kompilasi: T kahiji = anyar T (). Ieu atra, sabab teu nyaho sateuacanna naha argumen ngaluluskeun hiji kelas pinuh atawa abstrak, atawa malah panganteur. Sami mana pikeun nyieun arrays.

jenis kawates

Rada sering aya situasi nalika éta perlu ngawatesan daptar jenis nu bisa diliwatan salaku hiji argumen pikeun Java kelas generik. Hayu urang nganggap yen dina Pair kelas urang urang hayang encapsulate mung nilai numeris keur operasi matematik salajengna on aranjeunna. Jang ngalampahkeun ieu kami kudu ngartikeun wates luhur tina tipe parameter. Hal ieu sadar ku cara maké hiji Iklan superclass diwariskeun sagala alesan diliwatan dina kurung sudut. Bakal katingal saperti kieu: kelas Pair . Dina ragam ieu, compiler anu manggih yén tinimbang parameter T bisa Cirian atawa kelas Jumlah atanapi salah sahiji subclasses na.

Ieu panarimaan umum. palarangan sapertos anu sering dipaké pikeun nyadiakeun parameter tipe kasaluyuan dina hiji jeung kelas anu sarua. Mertimbangkeun conto dina kelas Pair kami: kelas Pair . Di dieu kami ngabejaan ka kompiler yén jenis T tiasa sawenang, sarta tipe V kudu boh T tipe atawa salah sahiji subclasses na.

Ngawatesan éta "handap" persis cara sarua, tapi tinimbang kecap ngalegaan pikeun ngeja kecap nu super. Yén kelas ieu digolongkeun Pair nyebutkeun yen tinimbang T bisa jadi Cirian atawa hiji ArrayList, atawa naon baé kelas atawa panganteur nu eta inherits.

métode Java generik na konstruktor

Dina Java, Generalisasi bisa dilarapkeun teu ngan ka kelas, tapi ogé métode. Contona, metoda generik bisa dinyatakeun dina kelas biasa.

Saperti katempo dina gambar di luhur, métode ad digeneralisasi teu deal badag. Cukup méméh tipe balikna metoda pikeun nempatkeun kurung sudut sarta tangtukeun parameter tipe di aranjeunna.

Lamun sagalana geus rengse kitu mun constructor nu:

kurung sudut dina hal ieu nempatkeun saméméh nami desainer, sabab manehna geus euweuh nilai mulang. Hasil tina duanana program bakal:

integer

tali

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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