Häufig verwendete Java-Generika

Ich war verwirrt über die Verwendung von Generika (generischer Typ) und schrieb ein Beispiel, das ich häufig verwende.

Ich möchte als Argument der Klasse entscheiden

public class Foo<T> {
    T t;
    public T get() {
        return t;
    }
    public void set(T t) {
        this.t = t;
    }
}

Wenn Sie mehrere Parameter verwenden, trennen Sie diese mit `Foo <T, U>` und einem Komma.

Ich möchte eine Unterklasse erzwingen

public class Foo<T extends Parent> {
    T t;
    public T get() {
        return t;
    }
    public void set(T t) {
        this.t = t;
    }
}

Nur bei Verwendung einer Methode

Es ist unpraktisch, wenn Sie eine vorübergehende Entscheidung treffen möchten, wenn Sie sie für die gesamte Klasse angeben. Zum Beispiel, wenn Sie eine Liste in ein Array konvertieren möchten

List list = new ArrayList<String>();
list.add("foo1");
list.add("foo2");
list.add("foo3");
String[] strList = list.toArray(new String[list.size()]);

Ich denke, Sie können die toArray-Methode wie diese verwenden. Die Implementierung zu diesem Zeitpunkt

public class Foo {
    public <T> T get(T t) {
        return t;
    }
}

Zu diesem Zeitpunkt wird T durch Betrachten des Argumenttyps bestimmt.

Instanz kann nicht erstellt werden

Es überrascht nicht, dass es kein neues T () sein kann. Der Grund ist, dass es keine Garantie gibt, dass eine Instanz erstellt werden kann, es sei denn, Sie wissen, wer T ist.

public class Foo<T extends Parent> {
    public T get() {
        return new T(); //Kann nicht!!
    }
}

Es scheint, dass Sie Java Refactoring verwenden können, um eine Instanz aus der Class-Klasse zu erstellen, um eine Codierung wie "new T ()" zu erreichen, aber die Leistung scheint erheblich zu sinken.

Recommended Posts

Häufig verwendete Java-Generika
[Java] Generika
Java Generics Zusammenfassung
[Java] Generics-Beispiel
Häufig verwendeter Docker-Compose-Befehl
Java Häufig verwendete Anweisungsliste (für Anfänger und Anfänger)
Die häufig verwendeten Bedienungshinweise von IntelliJ
[Java] Generics-Klasse und Generics-Methode
Häufig verwendete Prozesse in SpreadSheet
Java Generics T und? Unterschied
Schienenkonsole Häufig verwendete Operationen
Häufig verwendete Maven-Befehlssammlung
[Persönliches Memo] Häufig verwendete Java-Grammatik, die von Zeit zu Zeit aktualisiert wird
Häufig verwendete Syntaxbeispiele in Java
Git Flow Häufig verwendete Befehlsnotiz
Häufig verwendete Methoden in Active Record
Entwerfen Sie Muster für häufig verwendete Java-Bibliotheken - Fabrikmuster
Zusammenfassung häufig verwendeter Docker-Befehle
Effektive Java 3rd Edition Kapitel 5 Generika
Java
[Java] Versuchen Sie, mithilfe von Generika zu implementieren
Java Generics (definiert Klassen und Methoden)
Kotlin-Generika für Java-Entwickler
[Docker] Andere häufig verwendete (wahrscheinlich) Docker-Anweisungen
Java
Warum Java Vector nicht verwendet wird
[Persönliche Notizen] Häufig verwendete IntelliJ IDEA-Verknüpfungen
[EMMET-Notation] Grundlegende, häufig verwendete Zusammenfassung der Emmet-Notation
[Java] Einführung in den Wildcard-Typ "Generics Boundary Wildcard"
Java Zusammenfassung der häufig gesuchten Typkonvertierungen
Informationen zur Bedeutung von Typvariablen, E, T usw., die in in Java verwendeten Generika verwendet werden