Java Generics (з прикладами)

У цьому підручнику ми дізнаємося про Java Generics, як створити загальний клас та методи та його переваги на прикладах.

Java Generics дозволяє нам створити єдиний клас, інтерфейс та метод, які можна використовувати з різними типами даних (об'єктами).

Це допомагає нам повторно використовувати наш код.

Примітка : Дженерики не працює з примітивними типами ( int, float, charі т.д.).

Загальний клас Java

Ми можемо створити клас, який можна використовувати з даними будь-якого типу. Такий клас відомий як Загальний клас.

Ось як ми можемо створити загальний клас на Java:

Приклад: Створіть загальний клас

 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 Повернення загального класу: Програмування на Java

У наведеному вище прикладі ми створили загальний клас з назвою GenericsClass. Цей клас можна використовувати для роботи з даними будь-якого типу.

 class GenericsClass (… )

Тут T, що використовується всередині кутової дужки, вказує на параметр типу . Всередині Mainкласу ми створили два об'єкти GenericsClass

  • intObj - Тут параметр типу T замінено на Integer. Тепер GenericsClass працює з цілими даними.
  • stringObj - Тут параметр типу T замінено на String. Тепер GenericsClass працює з рядковими даними.

Java Generics Method

Подібно до класу дженериків, ми також можемо створити метод, який можна використовувати з даними будь-якого типу. Такий клас відомий як загальний метод.

Ось як ми можемо створити загальний клас на Java:

Приклад: Створіть загальний метод

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

Вихідні дані

 Загальний метод: Передані дані: Програмування на Java Загальний метод: Передані дані: 25

У наведеному вище прикладі ми створили загальний метод з назвою genericsMethod.

 public void genericMethod(T data) (… )

Тут параметр type вставляється після модифікатора publicта перед типом return void.

Ми можемо викликати загальний метод, розмістивши фактичний тип і всередині дужки перед назвою методу.

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

Примітка : Ми можемо викликати загальний метод, не включаючи параметр type. Наприклад,

 demo.genericsMethod("Java Programming");

У цьому випадку компілятор може зіставити параметр типу на основі значення, переданого методу.

Обмежені типи

Загалом параметр type може приймати будь-які типи даних (крім примітивних типів).

Однак, якщо ми хочемо використовувати узагальнені засоби лише для певних типів (наприклад, приймати дані числових типів), тоді ми можемо використовувати обмежені типи.

У випадку пов'язаних типів ми використовуємо 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(); ) )

У наведеному вище прикладі ми створили клас з назвою GenericsClass. Зверніть увагу на вираз, зверніть увагу на вираз

  

Тут GenericsClass створюється з обмеженим типом. Це означає, що GenericsClass може працювати лише з типами даних, які є дочірніми для Number( Integer, Doubleтощо).

Однак ми створили об'єкт класу дженериків за допомогою String. У цьому випадку ми отримаємо таку помилку.

GenericsClass obj = new GenericsClass (); причина: змінна умовиводу T має несумісні обмеження рівності меж: Рядок нижньої межі: Номер, де T є змінною типу: T поширюється Номер, оголошений у класі GenericsClass

Переваги Java Generics

1. Код багаторазового використання

За допомогою дженериків на Java ми можемо написати код, який буде працювати з різними типами даних. Наприклад,

 public void genericsMethod(T data) (… )

Тут ми створили загальний метод. Цей самий метод можна використовувати для виконання операцій з цілими даними, рядковими даними тощо.

2. Перевірка типу під час компіляції

Параметр type загальних джерел надає інформацію про тип даних, що використовуються в коді загальних кодів. Наприклад,

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

Тут ми знаємо, що GenericsClass працює Integerлише з даними.

Тепер, якщо ми спробуємо передати цьому класу дані, крім Integer, програма згенерує помилку під час компіляції.

3. Використовується з колекціями

Структура колекцій використовує концепцію загальних засобів в Java. Наприклад,

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

У наведеному вище прикладі ми використовували один і той же клас ArrayList для роботи з різними типами даних.

Аналогічно ArrayList, інші колекції ( LinkedList, Queue, Maps, і т.д.) також є родовими в Java.

Цікаві статті...