Uso de genéricos de Java <T> T, T, <T>

Hablemos de ¿qué es T en los genéricos de Java?

T se denomina variable de tipo en los genéricos de Java. Entonces, ¿qué es una variable de tipo?

Las variables de tipo se utilizan en la definición de toda la clase para especificar el tipo de retorno del método, y también pueden especificar los tipos de campos y variables locales.Podemos reemplazar las variables de tipo con tipos específicos para instanciar tipos genéricos.

Si miramos a menudo el código fuente, podemos ver muchas variables de tipo similares a T. Permítanme presentarles brevemente lo que representan estas variables de tipo.

Ⅰ, T, U, S: representan cualquier tipo

Ⅱ, K: Indica el tipo de llave

Ⅲ, V: Indica el tipo de valor

Ⅳ, E: Indica el tipo de elemento de la colección

Ⅴ, N: Indica el tipo digital

Después de comprender el significado de este tipo de variables, volvemos a la historia principal, ¿ cuál es la diferencia en el uso de <T> T , Ty ?<T>

Código de muestra

public class GenericMethod {
    
    
    public static void main(String[] args) {
    
    
        Double[] num = {
    
    1.11, 2.22, 3.33, 4.44, 5.55, 6.66};
        String[] str = {
    
    "Hello", "World", "你好", "世界"};
 
        Generic01 generic01 = new Generic01();
        generic01.toGeneric01(num);
        generic01.toGeneric01(str);
 
 
        Generic02<Double> doubleGeneric02 = new Generic02<>();
        doubleGeneric02.toGeneric02(num);
        Generic02<String> doubleGeneric03 = new Generic02<>();
        doubleGeneric03.toGeneric02(str);
    }
}
 
class Generic01 {
    
    
    public <T> T toGeneric01(T[] arr) {
    
    
        return arr[arr.length - 1];
    }
}
 
class Generic02<T> {
    
    
    public T toGeneric02(T[] arr) {
    
    
        return arr[arr.length - 1];
    }
}
 
class Generic03 {
    
    
    public <T> void toGeneric03(T[] arr) {
    
    
        T t = arr[arr.length - 1];
    }
}

En la prueba de muestra anterior, escribí dos clases Generic01 y Generic02 respectivamente. El estilo del valor de retorno del método escrito por la clase Generic01 es <T> T, y el estilo del valor de retorno del método escrito por la clase Generic02 es T. Al escribir, descubrí que si se escribe el valor de retorno del método T, entonces esta clase debe ser genérica. En pocas palabras, debe agregarse después de la clase Generic02 <T>, de lo contrario, ¡se informará un error!

Después de agregar
inserte la descripción de la imagen aquí
la clase Generic02 <T>de la siguiente manera, cuando llamamos al método a través de esta clase, debemos pasar el tipo, como Integer, Double, String, nuestra clase personalizada, etc., y la clase Generic01 devuelta por el método no <T> Tnecesita Si conoce el tipo, simplemente páselo ~

inserte la descripción de la imagen aquí
Después de hablar de Generic01 y Generic02, hablemos de lo que significa Generic03.

La T en el método Generic03
public <T>es la función de un modificador, lo que significa que es un método genérico, lo que significa lo mismo que la modificación estática de un método estático. Sin embargo, aquí no es el tipo de valor devuelto, pero significa que los parámetros <T>pasados aquí pueden ser genéricas o Las variables definidas a continuación pueden ser genéricas <T>El propósito aquí es asegurar que el tipo de datos T puede aparecer en los parámetros o las variables definidas en el método pueden ser de Teste tipo de datos.

Resumir T、 <T>、<T> T

T Representa
que solo Tse pueden pasar datos de tipo, es decir, el tipo de datos instanciado por el método es Tel tipo de datos de . (De acuerdo con la comprensión del código anterior, si Generic02, entonces está limitado Tal tipo Doble).

<T>Representa
el significado del modificador, lo que significa que se trata de un método genérico. La función es: los parámetros que se pueden pasar son Tvariables de este tipo

<T> TRepresenta
① El primero <T> representa el tipo genérico ② El segundo representa el tipo de datos Tdevueltos (por ejemplo: entero, doble, cadena, etc.) ③ El tercero es para limitar el tipo de datos entrantes (por ejemplo: limitado a matrices, cobros, etc. esperar)TT

Supongo que te gusta

Origin blog.csdn.net/qq_27480007/article/details/130932843
Recomendado
Clasificación