A veces, es útil usar una clase que solo contiene métodos estáticos y campos estáticos.
Como ejemplo, podemos usar clases de utilidad como java.lang.Math, java.util.Arrays, que agrupan métodos relacionados con operaciones matemáticas o arreglos. O también, podemos usar java.util.Collections que contiene métodos de fábrica estáticos para crear objetos que implementan una interfaz específica.
Estas clases de utilidad se pueden usar sin necesidad de tener variables o métodos de instancia, por lo que no requieren un constructor. Sin embargo, si no se define un constructor, el compilador crea automáticamente un constructor público por defecto. Esto hace que sea imposible para el usuario distinguir si el constructor se creó automáticamente.
Para evitar esto, a veces se utilizan clases abstractas. Sin embargo, las clases abstractas no impiden la instanciación. Se puede crear una subclase y luego instanciarla.
Por lo tanto, para evitar la instanciación de una clase de utilidad, es necesario hacer que el modificador de acceso del constructor sea privado.
Si el modificador de acceso del constructor predeterminado es privado, no se puede acceder a él desde fuera de la clase. Además, se ha bloqueado la generación de excepciones en caso de que se llame internamente al constructor predeterminado.
Este constructor privado puede dificultar la comprensión del constructor para los usuarios, por lo que es recomendable agregar un comentario. Como referencia, bloquear el constructor con privado también impide la herencia.
Comentarios0