¿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.