Какво е Generics в Java? - Ръководство за начинаещи



Тази статия за Generics в Java ще даде кратка представа за това какво е java generics и различните му видове, заедно с примери.

Помислете за пример, в който трябва да направите списък с живите същества в дадено населено място. Няма значение дали е човек, животно или растение. Важно е само живо същество. В този случай бихте ги групирали като „Живи същества“, а не да ги категоризирате. По същия начин, когато трябва да съхранявате някои данни, за вас е важно съдържанието, а не типа на данните и именно там използвате Generics. Дженерици в е езикова функция, която позволява използването на родови типове и методи.

По-долу е списъкът с теми, които ще разглеждам в тази статия:





Какво е Generics в Java?

Дженерици е термин, който обозначава набор от езикови характеристики, свързани с дефинирането и използването на родови типове и методи. Java Generic методи се различават от обикновените типове данни и методи. Преди Generics използвахме за съхранение на всякакъв вид обекти, т.е. не родово . Сега Generics принуждават програмист за съхраняване на определен тип обекти.

Сега, след като знаете какво е Generics в Java, нека продължим напред и да разберем защо имате нужда от Java Generics.



Защо Java Generics?

Ако погледнете класове, тогава ще забележите, че повечето класове вземат параметър / аргумент от тип Object. По принцип в тази форма те могат да приемат всеки тип Java като аргумент и да върнат същия обект или аргумент. Те са по същество разнородни т.е. не е от подобен тип.

FrameworkHierarchy - Generics in Java - Edureka

Понякога в приложението Java типът данни на входа не е фиксиран. Входът може да бъде цяло число , да се плувка или . За да присвоите входа на от правилния тип данни, трябваше да се извършат предварителни проверки. В традиционния подход, след приемане на входа, типът на данните на входа се проверява и след това се присвоява на променливата на правилния тип данни. Когато тази логика беше използвана, дължината на кода и времето за изпълнение бяха увеличени. За да избегнете това, Въведени са генерични лекарства . Когато използвате Generics, параметрите в кода се проверяват по време на компилация автоматично и той задава типа на данните по подразбиране. И така, тук ви трябва концепцията за генерични продукти в Java.



Сега, след като сте придобили известна представа за генеричните продукти, нека продължим напред и да разгледаме различните начини какДженериците могат да се прилагат към изходния код.

Видове Java Generics

Има 4 различни начина, по които Generics могат да бъдат приложени в Java, и те са както следва:

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

Сега нека разберем как родовите лекарства могат да бъдат приложени към клас на типа в дълбочина.

1. Клас от родов тип

За един клас се казва, че е общ, ако декларира една или повече променливи от тип. Тези типове променливи са известни като параметрите на типа на . Нека разберем това с помощта на пример. В примера по-долу ще създам клас с едно свойство х и видът на имота е обект.

class Genericclass {private Object x public void set (Object x) {this.x = x} public Object get () {return x}}

Тук, след като инициализирате класа с определен тип, класът трябва да се използва само с този конкретен тип. Напр. Ако искате един екземпляр на класа да съдържа стойността х от тип ‘ Струна ‘, Тогава програмистът трябва да зададе и да вземе единственото Тип. Тъй като съм декларирал тип свойство за Object, няма начин да се приложи това ограничение. Програмист може да зададе всеки обект и може да очаква всеки тип на върната стойност get метод тъй като всички типове Java са подтипове на клас.

За да наложим този тип ограничения, можем да използваме генерични лекарства, както е показано по-долу:

class Genericclass {// T означава „Type“ private T x public void set (T x) {this.x = x} public T get () {return x}}

Сега можете да сте сигурни, че класът няма да бъде злоупотребяван с грешни типове. Прост пример за' Genericclass ”Изглежда както е показано по-долу:

Екземпляр Genericclass = нов Genericclass () instance.set ('Edureka') instance.set (10) // Това ще доведе до грешка във времето на компилиране

Така че това работи. Товааналогията е вярна и за интерфейса. Нека да разгледаме бързо един пример, за да разберем как информацията за родовия тип може да се използва в интерфейсите в java.

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

An се отнася до абстрактните типове данни. Те позволяват да бъдат манипулирани независимо от детайлите на тяхното представяне. Също така те образуват йерархия в езици. Нека разберем как родовият тип може да се приложи към интерфейси в Java.

// Общ интерфейс за дефиниция на интерфейс GenericInterface {T2 PerformExecution (T1 x) T1 ReverseExecution (T2 x)} // Клас, изпълняващ общ клас на интерфейс Genericclass изпълнява GenericInterface {public Integer PerformExecution (String x) {// изпълнение код} public String ReverseExecution ( Цяло число x) {// код за изпълнение}}

Надявам се, че сте успели да разберете как Generics могат да бъдат приложени към типа клас и интерфейсите. Сега нека се задълбочим в тази статия и да разберем как тя е полезна за методи и конструктори.

c срещу c ++ срещу java

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

Общите методи много приличат на родовите класове. Те се различават един от друг само в един аспект, който информация за обхвата или типа е само в метода. Общите методи въвеждат свои собствени параметри на типа.

Нека разберем това с пример. По-долу е даден пример за общ метод, който може да се използва за намиране на всички случаи на параметри на типа в списък с променливи.

публичен статичен int countAllOccurrences (T [] списък, T елемент) {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}

Ако предадете списък с String за търсене по този метод, той ще работи добре. Но ако се опитате да намерите число в списъка с низове, това ще даде грешка във времето на компилиране.

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

4. Генерален конструктор

За строител е блок от код, който инициализира новосъздадения обект. A строител прилича на метод на екземпляр в J ava но това не е метод, тъй като няма тип връщане. Конструкторът има същото име като класа и изглежда така в J ava код. Сега нека да вземем пример и да разберем как работи.

class Dimension {private T length private T width private T height // Generic constructor public Dimension (T length, T width, T height) {super () this.length = length this.width = width this.height = height}}

В горния пример конструкторът на клас Dimension има информация за типа. Така че можете да имате екземпляр на измерение само с всички атрибути от един тип. Така че по този начин можете да използвате конструктори от общ тип. Надявам се, че сте разбрали видовете генерици в Java.

Сега да продължим напред и да разгледаме предимствата на Generics в Java.

Предимства на Generics в Java

1. Многократна употреба на кода

сумирайте цифрите в цяло число java

Можете да съставите стратегия или клас или веднъж и използвайте за всякакъв вид или какъвто и да е начин, от който се нуждаете.

2. Не се изисква кастинг на отделни типове

По принцип възстановихте информация от всеки път, трябва да го въведете. Типирането при всяка задача за възстановяване е основна мигрена. За да се изкорени този подход, бяха въведени генерични лекарства.

3. Внедряване на негенеричен алгоритъм

Той може да изчисли алгоритмите, които работят и за различни видове обекти, които също са безопасни за типа.

Това беше всичко за предимствата на Java Generics. С това стигнахме до края на тази статия за Generics в Java. Надявам се, че сте намерили информативен и сте ви помогнали да разберете Java Generics.

Вижте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Ние сме тук, за да ви помогнем във всяка стъпка по вашето пътуване, за да станете освен тези въпроси за интервю за Java, измислим учебна програма, предназначена за студенти и професионалисти, които искат да бъдат разработчик на Java. Курсът е предназначен да ви даде начален старт в програмирането на Java и да ви обучи както за основни, така и за разширени Java концепции, заедно с различни Java рамки като Hibernate & Spring.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на този „Дженерици в Java ”Статия и ние ще се свържем с вас възможно най-скоро.