parametros - polimorfismo java
Hacer métodos privados final? (6)
Agregar final
a los métodos no mejora el rendimiento con Sun HotSpot. Donde se pueda agregar el final
, HotSpot notará que el método nunca se anula y por lo tanto lo trata de la misma manera.
En Java, private
métodos private
no son virtuales. No puede anularlos, incluso utilizando clases anidadas donde pueden ser accesibles para subclases. Por ejemplo, los métodos que la instrucción para llamar a los privados es diferente de la que se usa para los que no son privados. Agregar métodos final
a privados no tiene ninguna probabilidad.
Como siempre, este tipo de micro-optimizaciones no vale la pena perder tiempo.
¿Es beneficioso hacer que los métodos privados sean definitivos? ¿Eso mejoraría el rendimiento?
Creo que "final privado" no tiene mucho sentido, porque un método privado no puede ser anulado. Por lo tanto, la búsqueda del método debe ser eficiente como cuando se usa el final.
¿Y sería mejor hacer un método de ayuda privada estático (cuando sea posible)?
¿Qué es mejor usar?
private Result doSomething()
private final Result doSomething()
private static Result doSomething()
private static final Result doSomething()
Al hacer que el método sea definitivo, no podemos anular el método. Como los métodos privados no se pueden acceder fuera de la clase. No hay ninguna tentativa de hacer que el método sea final y privado. Puede afectar el rendimiento.
El desarrollador de IBM funciona: teoría y práctica de Java: ¿es esa su respuesta final? el artículo es antiguo, pero es una buena idea usar la palabra clave final
en Java:
Marcar un método privado como final no cambia nada, pero puede confundir a los desarrolladores junior que buscan su código. Mantenlo simple.
No, no lo hará. los métodos privados no son heredados. Entonces hacerlos definitivos es un punto discutible. También tenga en cuenta que no debe hacer que los métodos sean definitivos para el rendimiento. JVM es más inteligente que eso. Este tipo de optimización no es muy útil. Debe hacer que las cosas sean definitivas, privadas, privadas, protegidas, privadas, etc. según la semántica y el diseño.
private static Result doSomething()
, si este método no está utilizando ninguna variable de instancia. En cualquier caso, hacer que sean definitivas no tiene sentido ya que el acceso es privado.