Јава генерички (са примерима)

У овом упутству ћемо научити о Јава Генерицс-у, како створити генеричку класу и методе и њене предности уз помоћ примера.

Јава Генерицс нам омогућава да створимо једну класу, интерфејс и метод који се могу користити са различитим врстама података (објектима).

Ово нам помаже да поново употребимо наш код.

Напомена : Генерици не ради са примитивним типовима ( int, float, char, итд).

Јава генерички час

Можемо створити класу која се може користити са било којом врстом података. Таква класа је позната као генеричка класа.

Ево како можемо створити генеричку класу на Јави:

Пример: Направите генеричку класу

 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; ) )

Оутпут

 Враћа се генеричка класа: 5 Генеричка класа враћа: Програмирање Јава

У горњем примеру смо креирали генеричку класу под називом ГенерицсЦласс. Ова класа се може користити за рад са било којом врстом података.

 class GenericsClass (… )

Овде Т који се користи унутар угаоне заграде означава параметар типа . Унутар Mainкласе смо креирали два објекта ГенерицсЦласс

  • интОбј - Овде је параметар типа Т замењен са Integer. Сада, ГенерицсЦласс ради са целобројним подацима.
  • стрингОбј - Овде је параметар типа Т замењен са String. Сада, ГенерицсЦласс ради са низом података.

Јава генерички метод

Слично генеричкој класи, такође можемо створити метод који се може користити са било којом врстом података. Таква класа је позната под називом Генерички метод.

Ево како можемо створити генеричку класу на Јави:

Пример: Креирајте генеричку методу

 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); ) )

Оутпут

 Генеричка метода: Подаци предани: Јава програмирање Генерички метод: Подаци предати: 25

У горњем примеру створили смо генеричку методу која се зове генерицсМетход.

 public void genericMethod(T data) (… )

Овде се параметар типа убацује после модификатора publicи пре типа повратка void.

Генеричку методу можемо позвати постављањем стварног типа и унутар заграде испред назива методе.

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

Напомена : Генеричку методу можемо позвати без укључивања параметра типа. На пример,

 demo.genericsMethod("Java Programming");

У овом случају, компајлер може да подудара параметар типа на основу вредности прослеђене методи.

Ограничени типови

Генерално, параметар типа може прихватити било који тип података (осим примитивних типова).

Међутим, ако желимо да користимо генеричке производе само за неке одређене типове (као што је прихватање података бројевних типова), онда можемо користити ограничене типове.

У случају везаних типова користимо extendsкључну реч. На пример,

 

То значи да Т може прихватити само податке који су подтипови А.

Пример: Ограничени типови

 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(); ) )

У горњем примеру смо креирали класу под називом ГенерицсЦласс. Примети израз, примети израз

  

Овде се ГенерицсЦласс креира са ограниченим типом. То значи ГенерицсЦласс могу само рад са типовима података који су деца Number( Integer, Double, и тако даље).

Међутим, креирали смо објекат генеричке класе помоћу String. У овом случају добићемо следећу грешку.

ГенерицсЦласс обј = нови ГенерицсЦласс (); разлог: променљива закључка Т има некомпатибилна ограничења једнакости граница: Доње границе низа: Број где је Т променљива типа: Т се протеже Број декларисан у класи ГенерицсЦласс

Предности Јава Генерицс-а

1. Поновна употреба кода

Уз помоћ генеричких података на Јави можемо написати код који ће радити са различитим врстама података. На пример,

 public void genericsMethod(T data) (… )

Овде смо створили генеричку методу. Исти тај метод се може користити за обављање операција над целобројним подацима, низом података итд.

2. Провера типа компајлирања

Тип параметар за генеричке пружа информације о врсти података који се користе у генеричком коду. На пример,

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

Овде знамо да ГенерицсЦласс ради само са Integerподацима.

Ако сада покушамо да овој класи проследимо податке који нису Интегер, програм ће генерисати грешку у време компајлирања.

3. Користи се са колекцијама

Оквир колекција користи концепт генеричких производа на Јави. На пример,

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

У горњем примеру користили смо исту класу АрраиЛист за рад са различитим врстама података.

Слично ArrayList, други колекције ( LinkedList, Queue, Maps, и тако даље) су генерички у Јави.

Занимљиви Чланци...