Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java-generieken

Java Generics

In deze zelfstudie leren we over Java Generics, hoe we generieke klassen en methoden kunnen maken en de voordelen ervan met behulp van voorbeelden.

Met Java Generics kunnen we een enkele klasse, interface en methode maken die met verschillende soorten gegevens (objecten) kan worden gebruikt.

Dit helpt ons om onze code opnieuw te gebruiken.

Opmerking :Algemeen werkt niet met primitieve typen (int , float , char , enz.).


Java Generics-klasse

We kunnen een klasse maken die met elk type gegevens kan worden gebruikt. Zo'n klasse staat bekend als Generics Class.

Hier is hoe we een generieke klasse in Java kunnen maken:

Voorbeeld:maak een Generics Class

class Main {
  public static void main(String[] args) {

    // initialize generic class
    // with Integer data
    GenericsClass<Integer> intObj = new GenericsClass<>(5);
    System.out.println("Generic Class returns: " + intObj.getData());

    // initialize generic class
    // with String data
    GenericsClass<String> stringObj = new GenericsClass<>("Java Programming");
    System.out.println("Generic Class returns: " + stringObj.getData());
  }
}

// create a generics class
class GenericsClass<T> {

  // 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;
  }
}

Uitvoer

Generic Class returns: 5
Generic Class returns: Java Programming

In het bovenstaande voorbeeld hebben we een generieke klasse gemaakt met de naam GenericsClass . Deze klasse kan worden gebruikt om met elk type gegevens te werken.

class GenericsClass<T> {...}

Hier, T gebruikt binnen de punthaak <> geeft de type parameter aan . Binnen de Main class hebben we twee objecten van GenericsClass . gemaakt

  • intObj - Hier de typeparameter T wordt vervangen door Integer . Nu, de GenericsClass werkt met integer data.
  • stringObj - Hier de typeparameter T wordt vervangen door String . Nu, de GenericsClass werkt met stringgegevens.

Java Generics-methode

Net als bij de klasse generieke geneesmiddelen, kunnen we ook een methode maken die met elk type gegevens kan worden gebruikt. Zo'n klasse staat bekend als Generics Method.

Hier is hoe we een generieke klasse in Java kunnen maken:

Voorbeeld:maak een algemene methode

class Main {
  public static void main(String[] args) {

    // initialize the class with Integer data
    DemoClass demo = new DemoClass();

    // generics method working with String
    demo.<String>genericsMethod("Java Programming");

    // generics method working with integer
    demo.<Integer>genericsMethod(25);
  }
}

class DemoClass {

  // creae a generics method
  public <T> void genericsMethod(T data) {
    System.out.println("Generics Method:");
    System.out.println("Data Passed: " + data);
  }
}

Uitvoer

Generics Method:
Data Passed: Java Programming
Generics Method:
Data Passed: 25

In het bovenstaande voorbeeld hebben we een generieke methode gemaakt met de naam genericsMethod .

public <T> void genericMethod(T data) {...}

Hier de typeparameter <T> wordt ingevoegd na de modifier public en voor het retourtype void .

We kunnen de generieke methode aanroepen door het werkelijke type <String> . te plaatsen en <Integer> tussen de haakjes voor de naam van de methode.

demo.<String>genericMethod("Java Programming");

demo.<Integer>genericMethod(25);

Opmerking :We kunnen de generics-methode aanroepen zonder de parameter type op te nemen. Bijvoorbeeld,

demo.genericsMethod("Java Programming");

In dit geval kan de compiler de parameter type matchen op basis van de waarde die aan de methode is doorgegeven.


Begrensde typen

Over het algemeen is de type parameter kan alle gegevenstypen accepteren (behalve primitieve typen).

Als we echter generieke geneesmiddelen willen gebruiken voor bepaalde specifieke typen (zoals het accepteren van gegevens van nummertypen), dan kunnen we begrensde typen gebruiken.

In het geval van gebonden typen gebruiken we de extends trefwoord. Bijvoorbeeld,

<T extends A>

Dit betekent T kan alleen gegevens accepteren die subtypes zijn van A .

Voorbeeld:begrensde typen

class GenericsClass <T extends Number> {

  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<String> obj = new GenericsClass<>();
  }
}

In het bovenstaande voorbeeld hebben we een klasse gemaakt met de naam GenericsClass. Let op de uitdrukking, let op de uitdrukking

<T extends Number> 

Hier, GenericsClass wordt gemaakt met een begrensd type. Dit betekent GenericsClass kan alleen werken met gegevenstypen die kinderen zijn van Number (Integer , Double , enzovoort).

We hebben echter een object van de klasse generics gemaakt met String . In dit geval krijgen we de volgende foutmelding.

GenericsClass<String> 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

Voordelen van Java Generics

1. Herbruikbaarheid van codes

Met behulp van generieke middelen in Java kunnen we code schrijven die met verschillende soorten gegevens werkt. Bijvoorbeeld,

public <T> void genericsMethod(T data) {...}

Hier hebben we een generieke methode ontwikkeld. Deze zelfde methode kan worden gebruikt om bewerkingen uit te voeren op integer data, string data, enzovoort.

2. Compileertypecontrole

De type parameter van generieke geneesmiddelen geeft informatie over het type gegevens dat in de generieke code wordt gebruikt. Bijvoorbeeld,

// using Generics
GenericsClass<Integer> list = new GenericsClass<>();

Hier weten we dat GenericsClass werkt met Integer alleen gegevens.

Als we nu andere gegevens dan Integer aan deze klasse proberen door te geven, genereert het programma een fout tijdens het compileren.

3. Gebruikt met verzamelingen

Het collectieraamwerk gebruikt het concept van generieke geneesmiddelen in Java. Bijvoorbeeld,

// creating a string type ArrayList
ArrayList<String> list1 = new ArrayList<>();

// creating a integer type ArrayList
ArrayList<Integer> list2 = new ArrayList<>();

In het bovenstaande voorbeeld hebben we dezelfde ArrayList-klasse gebruikt om met verschillende soorten gegevens te werken.

gelijk aan ArrayList , andere collecties (LinkedList , Queue , Maps , enzovoort) zijn ook generiek in Java.


Java

  1. Java laatste trefwoord
  2. Java-instantie van Operator
  3. Java-erfenis
  4. Java geneste statische klasse
  5. Java anonieme klasse
  6. Java Singleton-klasse
  7. Java-reflectie
  8. Java ArrayList-klasse
  9. Java Stack-klasse
  10. Java ObjectOutputStream-klasse
  11. Java-bestandsklasse