Avatar ·

¿Cuándo usar métodos estáticos en Java? Ejemplos y mejores prácticas

¡Hola, colegas! Soy un desarrollador Java principiante y me atormenta una pregunta: ¿cuándo usar correctamente métodos estáticos y cuándo usar métodos normales (de instancia)? Entiendo que `static` significa que el método pertenece a la clase, no al objeto. Pero en la práctica a menudo me confundo. Por ejemplo, escribo una pequeña calculadora: ```java public class Calculator { public int add(int a, int b) { return a + b; } public static int multiply(int a, int b) { return a * b; } } ``` Ambos métodos funcionan, pero no estoy seguro de cuál es la opción correcta. He visto que en clases utilitarias (como `Math` o `Collections`) casi todos los métodos son estáticos. Pero en mis proyectos a menudo veo que los métodos estáticos se usan para fábricas o singletons. También me confunde: si un método no usa campos de la clase (no accede a `this`), ¿debería hacerlo estático? ¿O no es una regla obligatoria? ¿Y qué pasa con las pruebas? Los métodos estáticos son más difíciles de mockear, ¿verdad? Aconsejenme, por fa