Java Generics (esimerkkejä)

Tässä opetusohjelmassa opitaan Java Generics -sovelluksesta, miten luodaan geneerinen luokka ja menetelmät sekä sen edut esimerkkien avulla.

Java Genericsin avulla voimme luoda yhden luokan, käyttöliittymän ja menetelmän, jota voidaan käyttää erityyppisten tietojen (objektien) kanssa.

Tämä auttaa meitä käyttämään koodiamme uudelleen.

Huom : Generics ei toimi alkukantaiset tyypit ( int, float, char, jne).

Java Generics -luokka

Voimme luoda luokan, jota voidaan käyttää kaiken tyyppisten tietojen kanssa. Tällainen luokka tunnetaan nimellä Generics Class.

Näin voimme luoda geneerisen luokan Java:

Esimerkki: Luo Generics-luokka

 class Main ( public static void main(String() args) ( // initialize generic class // with Integer data GenericsClass intObj = new GenericsClass(5); System.out.println("Generic Class returns: " + intObj.getData()); // initialize generic class // with String data GenericsClass stringObj = new GenericsClass("Java Programming"); System.out.println("Generic Class returns: " + stringObj.getData()); ) ) // create a generics class class GenericsClass ( // variable of T type private T data; public GenericsClass(T data) ( this.data = data; ) // method that return T type variable public T getData() ( return this.data; ) )

Tuotos

 Yleinen luokka palauttaa: 5 Yleinen luokka palauttaa: Java-ohjelmointi

Yllä olevassa esimerkissä olemme luoneet geneerisen luokan nimeltä GenericsClass. Tätä luokkaa voidaan käyttää kaiken tyyppisten tietojen kanssa.

 class GenericsClass (… )

Tässä kulmakannakkeen sisällä käytetty T osoittaa tyypin parametrin . MainLuokan sisällä olemme luoneet kaksi GenericsClass-objektia

  • intObj - Tässä tyypin parametri T korvataan parametrilla Integer. Nyt GenericsClass toimii kokonaislukutietojen kanssa.
  • stringObj - Tässä tyypin parametri T korvataan parametrilla String. Nyt GenericsClass toimii merkkijonodatan kanssa.

Java Generics -menetelmä

Samoin kuin yleisluokassa, voimme myös luoda menetelmän, jota voidaan käyttää minkä tahansa tyyppisen datan kanssa. Tällainen luokka tunnetaan nimellä Generics Method.

Näin voimme luoda geneerisen luokan Java:

Esimerkki: Luo Generics-menetelmä

 class Main ( public static void main(String() args) ( // initialize the class with Integer data DemoClass demo = new DemoClass(); // generics method working with String demo.genericsMethod("Java Programming"); // generics method working with integer demo.genericsMethod(25); ) ) class DemoClass ( // creae a generics method public void genericsMethod(T data) ( System.out.println("Generics Method:"); System.out.println("Data Passed: " + data); ) )

Tuotos

 Generics Method: Data Passed: Java Programming Generics Method: Data Passed: 25

Yllä olevassa esimerkissä olemme luoneet yleisen menetelmän nimeltä genericsMethod.

 public void genericMethod(T data) (… )

Tässä tyypin parametri lisätään muokkaajan jälkeen publicja ennen palautustyyppiä void.

Voimme kutsua geneeristä menetelmää sijoittamalla varsinainen tyyppi ja suluissa menetelmän nimen eteen.

 demo.genericMethod("Java Programming"); demo.genericMethod(25);

Huomaa : Voimme kutsua geneeristä menetelmää sisällyttämättä tyypin parametria. Esimerkiksi,

 demo.genericsMethod("Java Programming");

Tässä tapauksessa kääntäjä voi sovittaa tyypin parametrin menetelmän välitetyn arvon perusteella.

Rajoitetut tyypit

Yleensä tyypin parametri voi hyväksyä minkä tahansa tietotyypin (paitsi primitiiviset tyypit).

Jos kuitenkin haluamme käyttää geneerisiä aineita vain tietyille erityistyypeille (kuten hyväksyä numerotyyppien tiedot), voimme käyttää rajoitettuja tyyppejä.

Sidottujen tyyppien tapauksessa käytämme extendsavainsanaa. Esimerkiksi,

 

Tämä tarkoittaa, että T voi hyväksyä vain tiedot, jotka ovat A: n alatyyppejä.

Esimerkki: Rajoitetut tyypit

 class GenericsClass ( public void display() ( System.out.println("This is a bounded type generics class."); ) ) class Main ( public static void main(String() args) ( // create an object of GenericsClass GenericsClass obj = new GenericsClass(); ) )

Yllä olevassa esimerkissä olemme luoneet luokan nimeltä GenericsClass. Huomaa ilmaisu, huomaa ilmaisu

  

Tässä luodaan GenericsClass rajoitetulla tyypillä. Tämä tarkoittaa GenericsClass pystyy toimimaan vain datatyypit, jotka ovat lapsia Number( Integer, Doubleja niin edelleen).

Olemme kuitenkin luoneet objektin geneeristen aineiden kanssa String. Tässä tapauksessa saamme seuraavan virheen.

GenericsClass obj = uusi GenericsClass (); syy: päättelymuuttujalla T on yhteensopimattomat rajat tasa-arvorajoitukset: Merkkijonon alarajat: Luku, jossa T on tyyppimuuttuja: T laajentaa luokan GenericsClass ilmoitettua määrää

Java Genericsin edut

1. Koodin uudelleenkäytettävyys

Javan geneeristen ominaisuuksien avulla voimme kirjoittaa koodin, joka toimii erityyppisten tietojen kanssa. Esimerkiksi,

 public void genericsMethod(T data) (… )

Tässä olemme luoneet geneerisen menetelmän. Samaa menetelmää voidaan käyttää toimintojen suorittamiseen kokonaislukutiedoille, merkkijonotiedoille ja niin edelleen.

2. Käännösajan tyyppitarkistus

Tyyppi parametri geneeristen antaa tietoa datan tyypin käytetään geneerisiä koodi. Esimerkiksi,

 // using Generics GenericsClass list = new GenericsClass();

Täällä tiedämme, että GenericsClass toimii vain Integertietojen kanssa.

Jos yritämme nyt siirtää muita tietoja kuin kokonaisluku tähän luokkaan, ohjelma tuottaa virheen kääntöhetkellä.

3. Käytetään kokoelmien kanssa

Kokoelmakehyksessä käytetään Java: n geneeristen käsitteitä. Esimerkiksi,

 // creating a string type ArrayList ArrayList list1 = new ArrayList(); // creating a integer type ArrayList ArrayList list2 = new ArrayList();

Yllä olevassa esimerkissä olemme käyttäneet samaa ArrayList-luokkaa työskennellessä erityyppisten tietojen kanssa.

Samanlainen ArrayList, muut kokoelmat ( LinkedList, Queue, Maps, ja niin edelleen) ovat myös yleisiä Java.

Mielenkiintoisia artikkeleita...