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.
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?
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!