Համակարգիչներ, Ծրագրավորում
Java Generics նկարագիր եւ մեթոդները
Սկսած տեսքը Java լեզվի ենթարկվել է մի շարք փոփոխությունների, ինչը, անկասկած, դրական պահեր է իր ֆունկցիոնալ. Մեկը այդ նշանակալից փոփոխությունների ներդրումը Java ջեներիկներ կամ ընդհանրացումների: Այս գործառույթն ոչ միայն կատարել լեզուն ավելի ճկուն եւ բազմակողմանի, այլ նաեւ շատ ավելի ապահով առումով բերելով տվյալների տեսակները:
Փաստն այն է, որ նախքան ներդրման generics ի Java ընդհանուր ինդեքսը կարող է ստեղծվել, ոչ միայն առումով տեսակը հղման օբյեկտ: Նման հղումներ կարող է նշանակվել ցանկացած օբյեկտ: Ի վերջո, դասընթացներ Java անուղղակիորեն օբյեկտը կարգի ժառանգորդներ. Սակայն, այս մոտեցումը պոտենցիալ աղբյուր է բազմաթիվ սխալների հետ կապված անվտանգության տեսակների ակնհայտ փոխակերպման օբյեկտի օբյեկտից նպատակային տեսակի. Երբ, օգտագործելով ընդհանրացումներ բոլոր Casts կատարվում են անվերապահորեն եւ ավտոմատ կերպով, վերացնելով նույնիսկ ներուժ սխալների.
Java Generics: նկարագրությունը եւ օրինակը
Եկեք քննենք մի պարզ օրինակ է կիրառման ընդհանրացման կանոնավոր դասարանների նկարում: Եւ ապա անցնել մի մանրամասն քննության բոլոր subtleties եւ նրբություններին Java ջեներիկներ:
Ուշադրություն դարձնել այն ճանապարհին, որով դասը հայտարարագիրը տեղի է ունենում Pair: Անմիջապես հետո դասի անունով, բաց տեսանկյունից փակագծերում, որը նշված է նամակում Տ Դա մի տեսակ filler, որը գտնվում է ընթացքի մեջ ստեղծելով դեպք այս դասի կփոխարինվեն մի կոնկրետ տեսակի. Այն ունի հետեւյալ տեսքը: զույգ
Նկատի ունենալ, որ սկսած ութերորդ տարբերակի Java, նշելով նպատակային տեսակը երբ հռչակելու հղում անկյունաձեւ փակագծեր է կոնստրուկտոր կարող ձախ դատարկ. Այնպես որ, օրինակ, կարող է վերագրվել նաեւ վերը նշված: Զույգ
Երբ մի խավ, որը հայտարարել է, այնպիսի եղանակով, ապա իր մարմնի փոխարեն կոնկրետ տեսակների ոլորտներում, հղումներ, օբյեկտների կողմից վերադարձվել մեթոդներով դուք կարող եք օգտագործել այդ նամակը: Քանի որ T երբ ստեղծելով դասի օբյեկտ, որը փոխարինվում է որոշակի տեսակի, առաջին եւ երկրորդ դաշտերը այս դեպքում կլինի այդ տիպի Integer:
Հետեւելով տրամաբանությանը փաստարկների եւ firstItem secondItem, անդրադարձել է համապատասխան կոնստրուկտոր պետք է լինի նաեւ տիպի Integer կամ ենթադասի: Եթե դուք փորձեք փոխանցելու տվյալների տեսակը, որը տարբերվում է, թե ինչ էր նշված, երբ ստեղծելով օբյեկտ, Կազմողի թույլ չի տա այդ սխալը: Այսպիսով, փաստարկները կառուցիչը դեպքերում, երբ օբյեկտը կլինի հետեւյալն են: Pair
Ընդհանրացված մի քանի պարամետրերի դասի տեսակների
Ընդհանրացված դասերի կարող է նաեւ հայտարարի, բազմաթիվ պարամետրերի տեսակի, որոնք սահմանված անկյան փակագծերում ստորակետով. Redesigned է գործի զույգ դասի ներկայացվում է ստորեւ.
Ինչպես դուք կարող եք տեսնել, երբ դուք ստեղծեք մի դեպք այս դասի է անկյան փակագծերում պետք է նշի նույն շարք տեսակներ որպես պարամետրերի. Եթե դուք ծանոթ այս տեսակի տվյալների կառուցվածքի որպես քարտեզի վրա, դուք կարող եք տեսնել, որ այն օգտագործում հենց նույն սկզբունքը: Այնտեղ, առաջին փաստարկը սահմանում է տեսակի բանալին, եւ երկրորդը `այն տեսակի արժեքի. Հարկ է նշել, որ տեսակները փոխանցվել, երբ մի օբյեկտ փաստարկները կարող համընկնումը: Օրինակ, հետեւյալը Հայտարարություն զույգ դասի ատյանի բացարձակապես ճիշտ է: Զույգ
Որոշ առանձնահատկություններ ընդհանրացումների
Նախքան գնում հետագա, հարկ է նշել, որ Java Կազմողի չի ստեղծում տարբեր վարկածներ են դասի Զույգ: Ի դեպ, այդ գործընթացում կազմելու ընդհանրացված տեսակ ամբողջ տեղեկատվությունը ջնջվել: Փոխարենը, դուք բերել համապատասխան տեսակները, ստեղծելով հատուկ տարբերակը Pair դասի. Սակայն, ի ծրագրի կա դեռ միայն ընդհանուր տարբերակը դասի: Այս գործընթացը կոչվում է Java ընդհանուր մաքրման տեսակի.
Նկատի ունեցեք, կարեւոր կետ: Հղումներ դեպի տարբեր վարկածներ են նույն java ընդհանուր դասարանում չի կարող մատնանշել է մեկ եւ նույն օբյեկտի. Որ, ենթադրենք ունենք երկու հղումներ Զույգ
Սահմանափակումներ ջեներիկներ դասերի
Դա կարեւոր է իմանալ, թե որ ընդհանրացումները կարող է կիրառվել միայն տեղեկանք տեսակի, որ պետք է անցնել պարամետրերի ընդհանուր կարգի java փաստարկը պետք է լինի դասը տեսակը: Այս պարզ տեսակները, ինչպիսիք են, օրինակ, կրկնակի կամ երկար, չեն կարող փոխանցվել: Այլ կերպ ասած, հետեւյալ տողը զույգ դասը հռչակագիրը չի թույլատրվում: զույգ
Մեկ այլ լուրջ սահմանափակումը անկարողությունը ստեղծել մի դեպք է պարամետր տեսակի. Օրինակ, հետեւյալ տողը կառաջացնի է կազմելու սխալ: T առաջին = նոր T (). Սա ակնհայտ է, քանի որ դուք չգիտեք, թե նախապես, թե արդյոք փաստարկ անցել է ամբողջական դաս կամ վերացական, կամ նույնիսկ ինտերֆեյս. Նույնը վերաբերում է ստեղծելու զանգվածներ:
սահմանափակ տեսակները
Շատ հաճախ լինում են իրավիճակներ, երբ դա անհրաժեշտ է սահմանափակել ցուցակը տեսակների, որոնք կարող են անցել որպես փաստարկ է java ընդհանուր դաս. Եկեք ենթադրենք, որ մեր դասարանում Զույգ, մենք ցանկանում ենք մարմնացած միայն թվային արժեքները հետագա մաթեմատիկական գործողությունների նրանց վրա: Որպեսզի դա անել, մենք պետք է սահմանել վերին սահմանը պարամետր տեսակի. Այն իրականացվում է մի SuperClass գովազդները ժառանգած բոլոր փաստարկները անցել է անկյան փակագծերում: Դա կանդրադառնա նաեւ հետեւյալ կերպ. Դասի զույգ
Սա ընդհանուր ընդունելություն: Նման սահմանափակումները հաճախ օգտագործվում է ապահովել համատեղելիությունը տիպի պարամետրեր մեկ եւ նույն դասարանում: Տեսնենք, մեր դասարանում Զույգ: դասը Զույգ
Սահմանափակելու "հատակին" հենց նույն կերպ, բայց բառի փոխարեն տարածվում է հանգեցնել բառը սուպեր: Որը դասակարգվում կարգի զույգ
Ընդհանուր Java մեթոդները եւ շինարարներ
Java, ընդհանրացումներ կարող է կիրառվել ոչ միայն դասերի, այլեւ մեթոդներ. Օրինակ, մի ընդհանուր մեթոդը կարող է հայտարարել է հերթական դասարանում:
Ինչպես երեւում է գործչի վերը, Հայտարարություն ընդհանրացված մեթոդը ոչ մեծ գործարք. Բավական է նախքան վերադարձը տեսակը մեթոդի է դրել անկյունաձեւ փակագծեր եւ նշեք այն տեսակի պարամետրերի նրանց.
Եթե ամեն ինչ արվում է նույն կառուցիչին:
Անկյունաձեւ փակագծերը այս դեպքում դրել անունով դիզայներ, քանի որ նա չունի վերադարձի արժեքը: Արդյունք է երկու ծրագրերի կլինի:
ամբողջ թիվ
String
Similar articles
Trending Now