Java Generic Rekursive Typer

Java programmeringsspråk bruker klasser og objekter for å tillate programmerere til å jobbe med data. Som C ++, Java tillater også brukere å definere klasser som kan bruke flere datatyper, slik at den strekker fleksibiliteten og nytten av deres opprettede objekter. Ved å ta dette begrepet fleksibel datatype bruk, kalt "generiske", og bruke en rekursiv element, kan programmerere sikre at brukere av gjenstander ansette bare visse typer data, slik at den generiske objektet fungerer som forutsatt samtidig slik at brukerne kan utvide bruks av dette objektet.

Klasser og Typer

Java-funksjoner predominately som et objektorientert programmeringsspråk. Dette betyr at programmerere bruke "klasser" for å definere spesifikke "typer" av data. Klassene bruker også andre typer data i sin definisjon. I det følgende kode, for eksempel, bruker klasse Box tre heltall som en del av sin definisjon: for at klassen skal fungere for andre programmerere, de må følge denne definisjonen ved å levere tre heltall. Dette opprettholder effektiviteten av klasse Box:

klasse Box {

int lengde;
int bredde;
int høyde;

offentlig Box (int l, int m, int h) {// Box må bruke heltall
int lengde = l;
int width = w;
int height = h;
}
}

generiske typer

Noen programmerere, men kanskje ikke liker denne begrensningen. Noen kan utvikle datastrukturer, for eksempel, som krever at brukeren av datastrukturen få lov til å bruke noen datatype innenfor strukturen. I dette tilfellet, kan programmereren skape en "generisk" klasse som tar en bestemt datatype. Så, som i følgende kode eksempel klasse Box kan nå ta en hvilken som helst type "T" for å representere sine sider. Dette kan være svært nyttig hvis brukeren ønsker kanskje å bruke enten heltall eller desimaltall å representere sider:

klasse Box <T> {

T lengde;
T bredde;
T høyde;

offentlig Box (T l, T w, T h) {// Box nå bruker skriver T
int lengde = l;
int width = w;
int height = h;
}
}

Generiske Rekursive Typer

For å komplisere generiske typer, kanskje noen programmerere spille med reglene for hva som er tillatt som en generisk type for en klasse. For eksempel, i stedet for å ha en generell datatype "T," programmereren kan skape en klasse som tar den samme type som den klassen det tjener som den generiske type. Følgende eksempel illustrerer dette: I stedet for type T, bruker klassegenerisk type T som representerer en versjon, eller "arver" fra, klasse Box:

klasse Box <T strekker Box <T >> {

Box <T> lengde;
Box <T> bredde;
Box <T> høyde;

offentlig Box (Box <T> l, Box <T> w, Box <T> h) {// Box nå bruker skriver Box <T>
int lengde = l;
int width = w;
int height = h;
}
}

Nytten av Rekursive Typer

I praksis virker dette forvirrende og intuitiv. Men, faktisk det representerer en kunnskapsrike måte for skaperen av klassen for å håndheve viss type bruk. I dette tilfellet brukeren av klassen bruker skriver "Box" med generisk type "T" som en generisk type for seg selv. Dette betyr i hovedsak at en bruker som skaper et objekt av typen "Box <T>" er tvunget til å bruke samme type (Box <T>) som generisk type fremfor et heltall, desimal eller noe annet. Dette gjør at programmerer for å sikre at visse skjer når brukere samhandler med klasser de skaper.