Avatar ·

¿Cuál es la diferencia entre inner class y static nested class en Java?

¡Hola, colegas! Acabo de empezar a aprender Java y me topé con el tema de las clases anidadas. Leo diferentes fuentes, pero no logro captar la diferencia clara entre inner class y static nested class. Ambas se declaran dentro de otra clase, pero se comportan de manera diferente. Por ejemplo, tengo este código: ```java public class Outer { private String message = "Hello from Outer"; class Inner { public void print() { System.out.println(message); } } static class StaticNested { public void print() { // Aquí no puedo acceder a message directamente // System.out.println(message); // Error de compilación } } } ``` Preguntas: 1. ¿Por qué Inner puede acceder al campo message, pero StaticNested no? Ambos están dentro de Outer. 2. ¿Cómo crear instancias de estas clases correctamente? Probé `new Outer().new Inner()` — funciona, pero se ve extraño.