Najlepszy samouczek Java rodzajowych W 2024 r. W tym samouczku możesz dowiedzieć się metoda ogólna,Generic klasy,
Ogólny charakter sparametryzowane, typ danych oznacza, że operacja jest określony jako parametr.
Załóżmy, że mamy taki wymóg: napisać metodę sortowania, zdolnej do kształtowania tablicy, tablica ciągów ani żadnego innego rodzaju tablicy do sortowania, jak to osiągnąć?
Odpowiedź jest taka, że można użyć rodzajowych Java.
Korzystanie Java rodzajowych, możemy napisać ogólny sposób sortowania tablicy obiektów. Następnie, należy wywołać metodę rodzajową do tablicy liczb całkowitych, pływające tablice punktowe, ciągi znaków, tablic i sortować.
Można napisać metoda rodzajowa, które mogą być otrzymane podczas wywoływania różnego rodzaju parametrów. Z typem parametru metody rodzajowej, umowa kompilator z każdym wywołaniu metody z przeniesieniem się odpowiednio.
Oto zasady definiowania metody rodzajowe:
Poniższy przykład pokazuje, jak korzystać z metody rodzajowe różne elementy druku ciągów:
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 ); // 传递一个字符型数组 } }
Skompilować powyższy kod, wyniki przedstawiają się następująco:
整型数组元素为: 1 2 3 4 5 双精度型数组元素为: 1.1 2.2 3.3 4.4 字符型数组元素为: H E L L O
Istnieją ograniczone parametry typu:
Może się zdarzyć, będą chciały ograniczyć kto może przejść do parametru typu rodzaju zasięgu typu. Na przykład metoda cyfrowa pracy może tylko chce przyjąć instancje numeru lub numer podklasy. To jest cel ograniczonego parametru typu.
Aby zadeklarować ograniczony parametr typu, nazwa parametru Typ jest wymieniony jako pierwszy, a następnie słowa kluczowego rozciąga się wreszcie po jego górnej granicy.
Poniższy przykład demonstruje "rozciąga" Jak używać w sensie ogólnym znaczeniu "rozciąga" (kategoria) lub "narzędzi" (interfejs). Przykład sposobu rodzajowego powraca do maksymalnie trzy przedmioty porównywalne.
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" ) ); } }
Skompilować powyższy kod, wyniki przedstawiają się następująco:
3, 4 和 5 中最大的数为 5 6.6, 8.8 和 7.7 中最大的数为 8.8 pear, apple 和 orange 中最大的数为 pear
Podobne deklaracje i oświadczenia non-generic klasy generycznej klasy, oprócz nazwy klasy, dołącz do sekcji deklaracji typu parametru.
I metody ogólne, rodzajowe typu klasa sekcji deklaracji parametru zawiera również jeden lub więcej parametrów typu, rozdzielając je przecinkami między parametrami. Ogólny parametr, znany również jako rodzaj identyfikatora zmiennej służy do określania nazwy typu rodzajowego. Bo oni akceptują jeden lub więcej parametrów, klasy te nazywane są parametryzowane klas lub parametryzowane typy.
Poniższe przykłady pokazują, jak definiujemy rodzajową klasę:
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()); } }
Skompilować powyższy kod, wyniki przedstawiają się następująco:
整型值为 :10 字符串为 :本教程