Java Generics (med exempel)

I den här handledningen lär vi oss om Java Generics, hur man skapar generik klass och metoder och dess fördelar med hjälp av exempel.

Java Generics tillåter oss att skapa en enda klass, gränssnitt och metod som kan användas med olika typer av data (objekt).

Detta hjälper oss att återanvända vår kod.

Obs : Generics fungerar inte med primitiva typer ( int, float, char, etc).

Java Generics-klass

Vi kan skapa en klass som kan användas med alla typer av data. En sådan klass kallas Generics Class.

Här är hur vi kan skapa en generisk klass i Java:

Exempel: Skapa en generiklass

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

Produktion

 Generisk klass returnerar: 5 Generisk klass returnerar: Java-programmering

I exemplet ovan har vi skapat en generisk klass med namnet GenericsClass. Denna klass kan användas för att arbeta med alla typer av data.

 class GenericsClass (… )

Här, används T inuti vinkelfästet indikerar parametertypen . Inuti Mainklassen har vi skapat två objekt av GenericsClass

  • intObj - Här ersätts typparametern T med Integer. Nu fungerar GenericsClass med heltalsdata.
  • stringObj - Här ersätts typparametern T med String. Nu fungerar GenericsClass med strängdata.

Java Generics Method

I likhet med generikerklassen kan vi också skapa en metod som kan användas med alla typer av data. En sådan klass kallas Generics Method.

Här är hur vi kan skapa en generisk klass i Java:

Exempel: Skapa en generisk metod

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

Produktion

 Generikmetod: Godkänd data: Java-programmering Generikmetod: Godkänd data: 25

I exemplet ovan har vi skapat en generisk metod som heter genericsMethod.

 public void genericMethod(T data) (… )

Här infogas typparametern efter modifieraren publicoch före returtypen void.

Vi kan ringa generikmetoden genom att placera den faktiska typen och inuti fästet före metodnamnet.

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

Obs! Vi kan anropa generikmetoden utan att inkludera typparametern. Till exempel,

 demo.genericsMethod("Java Programming");

I det här fallet kan kompilatorn matcha typparametern baserat på värdet som skickas till metoden.

Avgränsade typer

Generellt kan typparametern acceptera alla datatyper (utom primitiva typer).

Men om vi bara vill använda generik för vissa specifika typer (som att acceptera data av nummertyper), kan vi dock använda begränsade typer.

När det gäller bundna typer använder vi extendsnyckelordet. Till exempel,

 

Detta betyder att T endast kan acceptera data som är undertyper av A.

Exempel: Avgränsade typer

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

I exemplet ovan har vi skapat en klass som heter GenericsClass. Lägg märke till uttrycket, lägg märke till uttrycket

  

Här skapas GenericsClass med begränsad typ. Detta innebär GenericsClass kan bara arbeta med datatyper som är barn Number( Integer, Doubleoch så vidare).

However, we have created an object of the generics class with String. In this case, we will get the following error.

 GenericsClass obj = new GenericsClass(); reason: inference variable T has incompatible bounds equality constraints: String lower bounds: Number where T is a type-variable: T extends Number declared in class GenericsClass

Advantages of Java Generics

1. Code Reusability

With the help of generics in Java, we can write code that will work with different types of data. For example,

 public void genericsMethod(T data) (… )

Here, we have created a generics method. This same method can be used to perform operations on integer data, string data, and so on.

2. Compile-time Type Checking

The type parameter of generics provides information about the type of data used in the generics code. For example,

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

Här vet vi att GenericsClass bara arbetar med Integerdata.

Om vi ​​nu försöker skicka andra data än heltal till den här klassen genererar programmet ett fel vid kompileringen.

3. Används med samlingar

Samlingsramen använder begreppet generics i Java. Till exempel,

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

I exemplet ovan har vi använt samma ArrayList-klass för att arbeta med olika typer av data.

I likhet med ArrayListandra samlingar ( LinkedList, Queue, Mapsoch så vidare) är också allmänt i Java.

Intressanta artiklar...