Geneerilised tüübid Flashcards

1
Q

Geneetiline tüüp — T___p___ter, mida t___kse <T>, kus T on m___ta ___, mida saab asendada k___te t___ga, mis tehakse, kui m___t või k___ kasutatakse.

A

Tüübiparameeter, mida tähistatakse <T>, kus T on määramata tüüp, mida saab asendada konkreetsete tüüpidega, mis tehakse, kui meetodit või klassi kasutatakse.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Geneeriliste tüüpide eelised (tõhusus, turvalisus)

A

Geneerilised tüübid võimaldavad kirjutada taaskasutatavaid klasse ja meetodeid, mis töötavad eri andmetüüpidega. Kood on tüübikindel, vähem vastuvõtlik tüübi vigadele, lihtsam lugeda ja tüübivead tulevad välja juba enne programmi jooksmist.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Geneeriliste tüüpide kasutamine andmestruktuurides ja meetodites

A

Geneerilisi tüüpe saab kasutada:
1. Liideses (interface MyInterface<T> {...})
2. Klassis (class Box<T> {...})
3. Konstruktoris (public Box(T item) {...})
4. Muutuja tüübina (List<String> stringList)
5. Meetodis (public <T> void print(T param) {...})

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Geneeriliste tüüpide piirangud (tõhusus, turvalisus)
Type erasure___
Instanceof___
List<String> strings ja List<Integer> integers___
Primitiivtüübid (List<int>)__
Staatilised kontekstid___

A

Type erasure — jooksuajal tüübiteave kustutatakse.
Näiteks ArrayList List<String> tüübi printimisel ütleb lihtsalt, et see on ArrayList, ja sealt ei tule välja, et see sisaldab Stringe.
Ja instanceof kontrolle tehes ei saa küsida, kas on List<String>, peab küsima kas on List<?>.
List<String> strings ja List<Integer> integers klasse võetakse ühesuguselt kui ArrayListi.
Geneeriline tüüp ei saa olla primitiivtüüp (List<int>).
Staatilistes kontekstides ei ole võimalik kasutada määramata tüüpi T.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Kuidas saab geneerilist tüüpi kasutada
1. Liideses?

A

interface MyInterface<T> {...}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Kuidas saab geneerilist tüüpi kasutada
2. Klassis?

A

class Box<T> {...}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Kuidas saab geneerilist tüüpi kasutada
3. Konstruktoris?

A

public Box(T item) {...}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Kuidas saab geneerilist tüüpi kasutada
4. Muutuja tüübina?

A

List<String> stringList

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Kuidas saab geneerilist tüüpi kasutada
5. Meetodis?

A

public <T> void print(T param) {...}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly