Das beste Java Generics-Tutorial im Jahr 2024. In diesem Tutorial können Sie Generisches Verfahren,Allgemein Klasse, lernen
Die generische Natur der parametrisierte Typ, bedeutet Datentyp, dass der Betrieb als Parameter angegeben wird.
Angenommen, wir haben eine solche Anforderung: schreiben eine Sortiermethode, der fähig ist die Array-Gestaltung, ein Array von Strings oder jede andere Art von Array zu sortieren, wie zu erreichen?
Die Antwort ist , dass Sie Java - Generika verwenden können.
Verwenden Sie Java Generics, können wir eine generische Methode schreiben ein Array von Objekten zu sortieren. Dann rufen Sie die allgemeine Methode, um ein Array von ganzen Zahlen, Punkt-Arrays schwimmen, Strings, Arrays und sortiert.
Sie können eine generische Methode schreiben, die empfangen werden können, wenn verschiedene Arten von Parametern aufrufen. Um den Parameter Typ generische Methode, der Compiler Deal mit jedem Methodenaufruf aus der Übertragung entsprechend.
Hier sind die Regeln eine generische Methode zu definieren:
Das folgende Beispiel zeigt, wie generische Methoden String verschiedene Druckelemente zu verwenden:
public class GenericMethodTest { // 泛型方法 printArray public static < E > void printArray( E[] inputArray ) { // 输出数组元素 for ( E element : inputArray ){ System.out.printf( "%s ", element ); } System.out.println(); } public static void main( String args[] ) { // 创建不同类型数组: Integer, Double 和 Character Integer[] intArray = { 1, 2, 3, 4, 5 }; Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 }; Character[] charArray = { 'H', 'E', 'L', 'L', 'O' }; System.out.println( "整型数组元素为:" ); printArray( intArray ); // 传递一个整型数组 System.out.println( "\n双精度型数组元素为:" ); printArray( doubleArray ); // 传递一个双精度型数组 System.out.println( "\n字符型数组元素为:" ); printArray( charArray ); // 传递一个字符型数组 } }
Kompilieren Sie den obigen Code, die Ergebnisse sind wie folgt:
整型数组元素为: 1 2 3 4 5 双精度型数组元素为: 1.1 2.2 3.3 4.4 字符型数组元素为: H E L L O
Es begrenzt Typ Parameter:
Es kann vorkommen, werden Sie wollen, zu beschränken, die auf eine Art Typ Parameter des Typs Bereich durchgelassen wird. Zum Beispiel kann wollen eine digitale Betriebsverfahren nur Instanzen von Anzahl oder Anzahl Subklassen zu akzeptieren. Dies ist der Zweck der beschränkten Typ-Parameter.
Um einen beschränkten Typ-Parameter deklarieren, wird der Typ-Parameter Name zuerst genannt, gefolgt von dem Schlüsselwort erstreckt sich schließlich seine obere Grenze gefolgt.
Das folgende Beispiel zeigt die "erweitert" Wie in einem allgemeinen Sinn Sinn zu verwenden "erweitert" (Kategorie) oder "Arbeitsgeräte" (Interface). Das Beispiel einer generischen Methode gibt die maximal drei vergleichbare Objekte.
public class MaximumTest { // 比较三个值并返回最大值 public static <T extends Comparable<T>> T maximum(T x, T y, T z) { T max = x; // 假设x是初始最大值 if ( y.compareTo( max ) > 0 ){ max = y; //y 更大 } if ( z.compareTo( max ) > 0 ){ max = z; // 现在 z 更大 } return max; // 返回最大对象 } public static void main( String args[] ) { System.out.printf( "%d, %d 和 %d 中最大的数为 %d\n\n", 3, 4, 5, maximum( 3, 4, 5 ) ); System.out.printf( "%.1f, %.1f 和 %.1f 中最大的数为 %.1f\n\n", 6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ) ); System.out.printf( "%s, %s 和 %s 中最大的数为 %s\n","pear", "apple", "orange", maximum( "pear", "apple", "orange" ) ); } }
Kompilieren Sie den obigen Code, die Ergebnisse sind wie folgt:
3, 4 和 5 中最大的数为 5 6.6, 8.8 和 7.7 中最大的数为 8.8 pear, apple 和 orange 中最大的数为 pear
Ähnliche Erklärungen und Aussagen von nicht-generische Klasse von generischen Klasse, neben dem Klassennamen, hängen Sie den Parameter Typdeklaration Abschnitt.
Und generische Methoden, generische Klasse Typ Parameterdeklaration Abschnitt enthält auch einen oder mehrere Parameter des Typs, die durch Kommas zwischen den Parametern getrennt. Ein generischer Parameter, auch als eine Art variable Kennung bekannt ist, verwendet, um den Namen eines gattungsgemäßen Art anzugeben. Weil sie einen oder mehrere Parameter akzeptieren, werden diese Klassen parametrisierte Klassen oder parametrisierte Typen genannt.
Die folgenden Beispiele zeigen, wie wir eine generische Klasse zu definieren:
public class Box<T> { private T t; public void add(T t) { this.t = t; } public T get() { return t; } public static void main(String[] args) { Box<Integer> integerBox = new Box<Integer>(); Box<String> stringBox = new Box<String>(); integerBox.add(new Integer(10)); stringBox.add(new String("本教程")); System.out.printf("整型值为 :%d\n\n", integerBox.get()); System.out.printf("字符串为 :%s\n", stringBox.get()); } }
Kompilieren Sie den obigen Code, die Ergebnisse sind wie folgt:
整型值为 :10 字符串为 :本教程