Avatar ·

¿Cuál es la diferencia entre una clase interna (inner class) y una clase anidada estática (static nested class) en Java?

¡Hola a todos! Empecé a estudiar Java y me confundí con el tema de las clases anidadas. Leí la documentación de Oracle, pero es demasiado árida. Hay dos tipos: inner class (clase interna) y static nested class (clase anidada estática). Escribí un pequeño ejemplo, pero no entiendo por qué el código funciona de manera diferente. Aquí está mi código: ```java public class OuterClass { private String outerField = "campo externo"; // Clase interna class InnerClass { void display() { System.out.println("Inner: " + outerField); } } // Clase anidada estática static class StaticNestedClass { void display() { // ¡Error! No ve outerField // System.out.println("StaticNested: " + outerField); } } } ``` Preguntas: 1. ¿Por qué `StaticNestedClass` no puede acceder a `outerField` sin crear una instancia de la clase externa, mientras que `InnerClass` sí puede? 2. ¿Cuándo se debe usar `static` para una clase anidada y cuándo no?