¿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
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.