Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java Generics meistern – Wiederverwendbaren, typsicheren Code erstellen

Java Generics – Wiederverwendbaren, typsicheren Code erstellen

Dieser Leitfaden erklärt Java Generics, wie man generische Klassen und Methoden erstellt und welche Vorteile sie bringen, illustriert mit klaren Beispielen.

Java Generics erlauben es Ihnen, eine Klasse, ein Interface oder eine Methode zu schreiben, die auf vielen verschiedenen Datentypen operieren kann, während sie Compile-Time-Sicherheit behält.

Hinweis: Generics funktionieren nicht mit primitiven Typen (int, float, char, etc.).


Java Generics Klasse

Durch Deklaration eines Typparameters können Sie eine Klasse erstellen, die mit jedem Objekttyp funktioniert.

Beispiel: Generische Klasse erstellen


class Main {
    public static void main(String[] args) {
        GenericsClass<Integer> intObj = new GenericsClass<>(5);
        System.out.println("Generische Klasse zurück: " + intObj.getData());
        GenericsClass<String> stringObj = new GenericsClass<>("Java Programming");
        System.out.println("Generische Klasse zurück: " + stringObj.getData());
    }
}

class GenericsClass<T> {
    private T data;
    public GenericsClass(T data) {
        this.data = data;
    }
    public T getData() {
        return this.data;
    }
}

Ausgabe

Generische Klasse zurück: 5
Generische Klasse zurück: Java Programming

Im obigen Beispiel ist GenericsClass eine generische Klasse, wo T der Typparameter ist. Zwei Instanzen werden erstellt:


Java Generics Methode

Methoden können auch generisch sein, was ihnen erlaubt, Argumente beliebigen Typs zu akzeptieren, während sie Typsicherheit behalten.

Beispiel: Generische Methode erstellen


class Main {
    public static void main(String[] args) {
        DemoClass demo = new DemoClass();
        demo.<String>genericsMethod("Java Programming");
        demo.<Integer>genericsMethod(25);
    }
}

class DemoClass {
    public <T> void genericsMethod(T data) {
        System.out.println("Generische Methode:");
        System.out.println("Übergebene Daten: " + data);
    }
}

Ausgabe

Generische Methode:
Übergebene Daten: Java Programming
Generische Methode:
Übergebene Daten: 25

Wenn der Compiler den Typ ableiten kann, können Sie das explizite Typargument weglassen:

demo.genericsMethod("Java Programming");

Bounded Types

Manchmal möchten Sie, dass ein generischer Typ nur eine bestimmte Familie von Klassen akzeptiert. Bounded Types erreichen dies mit dem extends Keyword.

Syntax: <T extends A> – T kann A oder jeder Subtyp von A sein.

Beispiel: Bounded Types


class GenericsClass <T extends Number> {
    public void display() {
        System.out.println("Dies ist eine bounded type generische Klasse.");
    }
}

class Main {
    public static void main(String[] args) {
        // GenericsClass<String> obj = new GenericsClass<>(); // Compile-Time-Fehler
    }
}

Hier akzeptiert GenericsClass nur numerische Typen (Integer, Double, etc.). Der Versuch, es mit String zu instanziieren, verursacht einen Compile-Time-Fehler:

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

Vorteile von Java Generics

1. Code-Wiederverwendbarkeit

Generischer Code kann auf mehreren Datentypen operieren und reduziert Duplikation. Zum Beispiel kann eine einzelne Methode Integers, Strings und benutzerdefinierte Objekte verarbeiten.

2. Compile-Time Type Checking

Da der Typparameter zur Compile-Zeit bekannt ist, kann der Compiler Typ-Mismatches erkennen, bevor das Programm läuft.

3. Nahtlose Integration mit Collections

Javas Collection Framework ist generics-basiert, was Collections ermöglicht, Typsicherheit durchzusetzen. Beispiele:

ArrayList<String> list1 = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();

Andere Collection-Klassen (LinkedList, Queue, Map, etc.) nutzen Generics für die gleichen Vorteile.

Java

  1. Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
  2. Java instanceof-Operator: Ein umfassender Leitfaden
  3. Java-Vererbung meistern: Konzepte, Typen und praktische Beispiele
  4. Java statische verschachtelte Klassen verstehen: Nutzung, Unterschiede und Beispiele
  5. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  6. Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
  7. Java Reflection meistern: Klassen, Methoden und Felder zur Laufzeit inspizieren
  8. Java ArrayList meistern: Operationen, Methoden und Best Practices
  9. Java ObjectOutputStream meistern: Serialisierung, Methoden und praktische Beispiele
  10. Java-Dateioperationen mit java.io meistern – Erstellen, Lesen, Schreiben & Löschen