Curso de Notaciones en Java y Cuándo Usarlas
Introducción
Las notaciones o anotaciones en Java son metadatos que agregamos al código para dar instrucciones al compilador, al runtime o a frameworks externos. No afectan directamente la lógica, pero permiten simplificar y enriquecer el desarrollo.
1. Notaciones Básicas en Java
@Override
Se usa para indicar que un método sobrescribe uno de la superclase. Ayuda a evitar errores de escritura.
class Animal {
public void sonido() { System.out.println("Sonido genérico"); }
}
class Perro extends Animal {
@Override
public void sonido() { System.out.println("Guau guau"); }
}
@Deprecated
Marca un método o clase como obsoleto. Sirve para advertir a los desarrolladores que no lo usen en nuevas implementaciones.
@Deprecated
public void metodoViejo() {
System.out.println("Este método está obsoleto");
}
@SuppressWarnings
Evita que el compilador muestre advertencias específicas.
@SuppressWarnings("unchecked")
List lista = new ArrayList();
2. Notaciones para Manejo de Código
@FunctionalInterface
Garantiza que una interfaz tenga exactamente un método abstracto, útil para expresiones lambda.
@FunctionalInterface
interface Operacion {
int calcular(int a, int b);
}
@SafeVarargs
Evita advertencias en métodos con varargs genéricos.
@SafeVarargs
public static void imprimir(T... elementos) {
for (T e : elementos) System.out.println(e);
}
3. Notaciones en JUnit (Testing)
JUnit hace uso intensivo de anotaciones:
@Test
: marca un método como prueba unitaria.@BeforeEach
: se ejecuta antes de cada prueba.@AfterEach
: se ejecuta después de cada prueba.
import org.junit.jupiter.api.*;
class CalculadoraTest {
@BeforeEach
void iniciar() {
System.out.println("Iniciando prueba...");
}
@Test
void sumarTest() {
Assertions.assertEquals(5, 2+3);
}
}
4. Notaciones en Frameworks
Frameworks como Spring y Hibernate dependen de anotaciones:
@Entity
: marca una clase como entidad en JPA.@Id
: indica la clave primaria de la entidad.@Autowired
: inyección de dependencias en Spring.@RestController
: define un controlador REST en Spring Boot.@RequestMapping
y derivados (@GetMapping
,@PostMapping
): mapean endpoints HTTP.@SpringBootApplication
: marca la clase principal de una app Spring Boot.@Service
,@Repository
,@Component
: indican roles específicos en la capa de aplicación.
@SpringBootApplication
public class MiAplicacion {
public static void main(String[] args) {
SpringApplication.run(MiAplicacion.class, args);
}
}
@Entity
class Usuario {
@Id
private Long id;
private String nombre;
}
@RestController
@RequestMapping("/usuarios")
class UsuarioController {
@Autowired
UsuarioService servicio;
@GetMapping("/{id}")
public Usuario obtenerUsuario(@PathVariable Long id) {
return servicio.buscarPorId(id);
}
}
Conclusión
Las notaciones en Java son una herramienta poderosa que mejora la legibilidad, ayuda al compilador y facilita el uso de frameworks. En especial, en Spring Boot se usan ampliamente para reducir configuración manual y hacer el código más declarativo y limpio.