Что такое Generics в Java? - Руководство для начинающих



Эта статья о дженериках в Java даст краткое представление о том, что такое дженерики java и их различных типах, а также примеры.

Рассмотрим пример, в котором вам нужно составить список живых существ в местности. Неважно, человек это, животное или растение. Все, что имеет значение, - это живое существо. В этом случае вы должны сгруппировать их все как «живые существа», а не категоризировать их. Точно так же, когда вам нужно сохранить какие-то данные, для вас важен контент, а не тип данных, и именно здесь вы используете Generics. Дженерики в - это языковая функция, которая позволяет использовать универсальные типы и методы.

Ниже приведен список тем, о которых я расскажу в этой статье:





Что такое Generics в Java?

Дженерики - это термин, обозначающий набор языковых функций, связанных с определением и использованием универсальных типов и методов. Универсальные методы Java отличаются от обычных типов данных и методов. До Generics мы использовали для хранения любого типа объектов, т.е. не общий . Теперь Generics заставляет программатор для хранения объектов определенного типа.

Теперь, когда вы знаете, что такое Generics в Java, давайте двигаться дальше и понять, зачем вам нужны Java Generics.



Почему Java Generics?

Если вы посмотрите на classes, то вы увидите, что большинство классов принимают параметр / аргумент типа Object. По сути, в этой форме они могут принимать любой тип Java в качестве аргумента и возвращать тот же объект или аргумент. Они по сути неоднородный т.е. не подобного типа.

FrameworkHierarchy - Обобщения в Java - Edureka

Иногда в приложении Java тип данных ввода не фиксируется. Вход может быть целое число , чтобы плавать или . Чтобы назначить вход на правильного типа данных необходимо было провести предварительную проверку. В традиционном подходе после ввода данных тип входных данных проверялся, а затем присваивался переменной правильного типа. При использовании этой логики длина кода и время выполнения были увеличены. Чтобы этого избежать, Были введены дженерики . Когда вы используете Generics, параметры в коде проверяются автоматически во время компиляции, и тип данных устанавливается по умолчанию. Вот где вам понадобится концепция дженериков в Java.



Теперь, когда вы получили некоторое представление о Generics, давайте продолжим и рассмотрим различные способыК исходному коду можно применить обобщения..

Типы Java Generics

Существует 4 различных способа применения Generics в Java, а именно:

  1. Класс универсального типа
  2. Общий интерфейс
  3. Общий метод
  4. Универсальный конструктор

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

1. Класс универсального типа

Класс называется универсальным, если он объявляет одну или несколько переменных типа. Эти типы переменных известны как параметры типа . Давайте разберемся в этом на примере. В приведенном ниже примере я создам класс с одним свойством Икс а тип собственности - объект.

class Genericclass {частный объект x public void set (Object x) {this.x = x} public Object get () {return x}}

Здесь, как только вы инициализируете класс с определенным типом, класс следует использовать только с этим конкретным типом. Например. Если вы хотите, чтобы один экземпляр класса содержал значение Икс типа ‘ Строка ‘, Тогда программист должен установить и получить единственный тип. Поскольку я объявил тип свойства для Object, нет способа применить это ограничение. Программист может установить любой объект и ожидать от него любого типа возвращаемого значения. получить метод поскольку все типы Java являются подтипами класс.

Чтобы применить этот тип ограничения, мы можем использовать дженерики, как показано ниже:

сортировка массива c ++ по возрастанию
class Genericclass {// T означает 'Тип' private T x public void set (T x) {this.x = x} public T get () {return x}}

Теперь вы можете быть уверены, что класс не будет использоваться неправильно с неправильными типами. Простой пример' Genericclass ”Выглядит так, как показано ниже:

Genericclass instance = new Genericclass () instance.set ('Edureka') instance.set (10) // Это вызовет ошибку времени компиляции

Вот как это работает. Этааналогия верна и для интерфейса. Давайте быстро рассмотрим пример, чтобы понять, как информация о типах универсальных типов может использоваться в интерфейсах в java.

2. Общий интерфейс

An относится к абстрактным типам данных. Они разрешают ими можно манипулировать независимо от деталей их представления. Кроме того, они образуют иерархию в языков. Давайте разберемся, как универсальный тип можно применить к интерфейсам в Java.

// Определение универсального интерфейса interface GenericInterface {T2 PerformExecution (T1 x) T1 ReverseExecution (T2 x)} // Класс, реализующий универсальный интерфейс, class Genericclass реализует GenericInterface {public Integer PerformExecution (String x) {// код выполнения} public String ReverseExecution ( Целое число x) {// код выполнения}}

Надеюсь, вы смогли понять, как универсальные шаблоны можно применять к классам типов и интерфейсам. Теперь давайте углубимся в эту статью и поймем, насколько она полезна для методов и конструкторов.

3. Общие методы

Универсальные методы очень похожи на универсальные классы. Они отличаются друг от друга только в одном аспекте: информация об области или типе находится только внутри метода. Универсальные методы вводят свои собственные параметры типа.

Давайте разберемся в этом на примере. Ниже приведен пример универсального метода, который можно использовать для поиска всех вхождений параметров типа в списке переменных.

public static int countAllOccurrences (T [] list, T element) {int count = 0 if (element == null) {for (T listElement: list) if (listElement == null) count ++} else {for (T listElement: list ) if (element.equals (listElement)) count ++} return count}

Если вы передадите список Строка для поиска в этом методе, она будет работать нормально. Но если вы попытаетесь найти Number в списке String, это даст ошибку времени компиляции.

Эта аналогия также похожа на конструктор. Давайте возьмем пример универсального конструктора и поймем, как он работает.

4. Универсальный конструктор

Строителю представляет собой блок кода, который инициализирует вновь созданный объект. А строитель напоминает метод экземпляра в J ава но это не метод, поскольку у него нет возвращаемого типа. Конструктор имеет то же имя, что и класс, и выглядит так в J ава код. Теперь давайте рассмотрим пример и поймем, как это работает.

class Dimension {private T length private T width private T height // Общий конструктор public Dimension (длина T, ширина T, высота T) {super () this.length = length this.width = width this.height = height}}

В приведенном выше примере конструктор класса Dimension имеет информацию о типе. Таким образом, у вас может быть экземпляр измерения со всеми атрибутами только одного типа. Вот как вы можете использовать конструкторы типов-дженериков. Надеюсь, вы разобрались в типах дженериков в Java.

Теперь давайте пойдем дальше и посмотрим на преимущества Generics в Java.

Преимущества дженериков в Java

1. Возможность повторного использования кода

Вы можете составить стратегию, или класс, или один раз и используйте для любого типа или любым способом, который вам нужен.

2. Приведение отдельных типов не требуется.

По сути, вы восстанавливали информацию из каждый раз вам нужно привести его к типу. Приведение типов при каждой задаче восстановления - серьезная мигрень. Чтобы искоренить этот подход, были введены дженерики.

3. Реализация неуниверсального алгоритма

Он может вычислять алгоритмы, которые работают с различными типами элементов, которые также являются типобезопасными.

Это все о преимуществах Java Generics. На этом мы подошли к концу статьи о Generics в Java. Я надеюсь, что вы нашли его информативным и помогли вам разобраться в Java Generics.

Проверьте от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Мы здесь, чтобы помогать вам на каждом этапе вашего пути. Для того, чтобы стать помимо вопросов на собеседовании по Java, мы разработали учебную программу, предназначенную для студентов и профессионалов, которые хотят стать Java-разработчиками. Курс разработан, чтобы дать вам хорошее начало в программировании на Java и обучить вас как основным, так и продвинутым концепциям Java, а также различным средам Java, таким как Hibernate и Spring.

Есть вопрос к нам? Пожалуйста, укажите это в комментариях к этому «Обобщению в Java. ' статья и мы свяжемся с вами как можно скорее.