Wie ist das in Java-Generika möglich?
PHP-Editor Apple antwortet für Sie: In Java-Generika ist die Frage „Wie ist das in Java-Generika möglich?“ tatsächlich möglich. Da Java-Generika die Verwendung von Platzhaltern zur Darstellung undefinierter Typen ermöglichen, z. B. die Verwendung von „?“ zur Darstellung eines beliebigen Typs. Wenn wir eine generische Methode oder eine generische Klasse definieren, können wir Platzhalter verwenden, um Parametertypen oder Rückgabewerttypen einzuschränken und bestimmte Funktionen zu erreichen. Obwohl es in einigen Fällen aufgrund der Typlöschung zu Einschränkungen kommen kann, können wir bei vernünftigem Design und angemessener Verwendung viele scheinbar unmögliche Operationen in Java-Generika erreichen.
Frageninhalt
Mir ist gerade etwas aufgefallen, das für mich in Bezug auf Java Generics sehr kontraintuitiv ist. Werfen wir einen Blick auf diese Methode:
public static <T> void inspect(T a, T b) { // ... }
Folgende Anrufe können getätigt werden:
inspect(new Integer(3), new String("What? How?"))
Ich denke, sobald der Typ T abgeleitet ist, muss er konsistent sein, genau wie zwei Zeichenfolgen oder zwei Ganzzahlen. Das macht wenig Sinn, denn wenn ich die folgende Zeile in meiner Methode habe:
T tmp
Was ist T?
Kann mir das jemand erklären?
Lösung
Das Hauptergebnis ist Integer
和String
都是从Serialized
erreicht.
Ihr Code lautet also:
public static <T extends Serializable> void inspect(T a, T b) { System.out.println(a + "_" + b); }
Wenn in Blascode geändert, nur in Integer
或Number
Unterklassen gültig.
public static <T extends Number> void inspect(T a, T b) { System.out.println(a + "_" + b); }
Hier ist ein besseres Beispiel:
public class MyTest { @Test public void demo() { inspect(new FirstSon("a"), new SecondSon("b")); } public <T> void inspect(T a, T b) { System.out.println(a + "_" + b); } interface Parent { } static class FirstSon implements Parent { private String name; public FirstSon(String name) { this.name = name; } } static class SecondSon implements Parent { private String name; public SecondSon(String name) { this.name = name; } } }
Das obige ist der detaillierte Inhalt vonWie ist das in Java-Generika möglich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

