Red de conocimiento informático - Conocimiento sistemático - Lenguaje de programación genérico

Lenguaje de programación genérico

Genéricos en .NET Framework

Los genéricos son clases, estructuras, interfaces y métodos que tienen marcadores de posición (parámetros de tipo). Estos marcadores de posición son clases, estructuras, interfaces y marcadores de posición para uno o. más tipos almacenados o utilizados por el método. Una clase de colección genérica puede utilizar parámetros de tipo como marcadores de posición para los tipos de objetos que almacena; los parámetros de tipo aparecen como los tipos de sus campos y como los tipos de parámetros de sus métodos. Un método genérico puede utilizar su parámetro de tipo como el tipo de su valor de retorno o como el tipo de uno de sus parámetros formales.

Dado que los tipos reales de los parámetros de tipo genérico de .NET Framework no se eliminarán en tiempo de ejecución, la velocidad de ejecución se acelerará debido al número reducido de conversiones de tipos.

Además, puede utilizar el método GetType para conocer los tipos reales de genéricos y sus parámetros de tipo cuando el programa se está ejecutando, y también puede utilizar la programación de reflexión.

Permite restricciones en los parámetros de tipo de genéricos individuales, incluidas las siguientes formas (suponiendo que C es un parámetro de tipo de un genérico, una clase general, una clase genérica o un parámetro de tipo de un genérico): T es una clase. T es un tipo de valor. T tiene un constructor público sin parámetros. T implementa la interfaz I. T es C o hereda de C .

Genéricos en Java

Los parámetros de los genéricos de Java solo pueden representar clases, no objetos individuales. Dado que los tipos reales de los parámetros de tipo genéricos de Java se eliminan en tiempo de compilación, los tipos de sus parámetros de tipo no se pueden conocer en tiempo de ejecución. El compilador de Java agregará automáticamente codificación de conversión de tipos al compilar genéricos, por lo que la velocidad de ejecución no se acelerará mediante el uso de genéricos. Java permite restricciones en los parámetros de tipo de genéricos individuales, incluidas las dos formas siguientes (suponiendo que T es un parámetro de tipo de un genérico y C es una clase general, una clase genérica o un parámetro de tipo de un genérico): T implementa la interfaz I. T es C o hereda de C . Una clase genérica no puede implementar la interfaz Throwable.

Généricos (plantillas) de C

C no puede restringir los parámetros de tipo de los genéricos. En el momento de la compilación, cada tipo genérico cerrado utilizado (es decir, un tipo genérico en el que se han especificado los tipos reales de todos los parámetros genéricos) tendrá codificación independiente y el compilador garantizará la seguridad de tipos en este momento. Sin embargo, si un genérico usa un miembro de su parámetro genérico y el parámetro genérico no contiene ese miembro, el mensaje de error generado por el compilador parecerá no tener nada que ver con el problema real, lo que hará más difícil cometer un error. .