Red de conocimiento informático - Material del sitio web - ¿Cómo se refleja el mecanismo de plantilla de funciones de C++ en JAVA?

¿Cómo se refleja el mecanismo de plantilla de funciones de C++ en JAVA?

Lo sentimos, Java tiene muchas menos funciones que C++. Java no admite plantillas. Sólo se admiten unas pocas sintaxis similares a plantillas de C++ para permitir una programación genérica muy limitada.

El soporte de Java para programación genérica se agregó recientemente y el soporte es muy pobre. No es necesario esperar poder utilizarlo como C++.

Java es un lenguaje OOP muy puro. Es inherentemente relativamente dinámico y de última etapa. Procesa muy poca información durante la compilación. Esto es completamente opuesto a las fuertes características estáticas de C++.

La mayor parte de la información de tipos en Java pertenece a RTTI, que se obtiene dinámicamente en tiempo de ejecución. A diferencia de C++, que el compilador deduce en tiempo de compilación, es básicamente imposible que Java admita la flexibilidad de C++. . plantilla.

Lo mismo ocurre con los genéricos de Java. Para decirlo sin rodeos, es solo un encubrimiento, que utiliza una sintaxis de plantilla similar a C++ para envolver la esencia de su formato dinámico orientado a objetos.

Por ejemplo, en Vector en Java, cuando guarda ints en él, cada int se empaqueta primero en un objeto Integer y luego se inserta en él. Primero, el objeto Object se convierte en un objeto Integer y luego se extrae el número entero, lo cual es un gran desvío.

Aunque el código es casi tan conciso como C++, la eficiencia real es n órdenes de magnitud peor que C++. Esto es realmente repugnante. C# funciona mejor que C# todavía crea instancias de código al menos para tipos de valores.

Java es inherentemente un lenguaje que fomenta la dinámica, el tiempo de ejecución y la programación orientada a objetos, por lo que no es adecuado para diseñar programas utilizando los paradigmas de programación genéricos en C++. Si puede tolerar la enorme pérdida de eficiencia del boxeo y unboxing de Java, puede usar la programación orientada a objetos para implementar la idea de que la misma función sirva para múltiples tipos, pero de hecho es muy ineficiente.