Avatar ·

Qual é a diferença entre inner class e static nested class em Java?

Olá a todos! Comecei a estudar Java e fiquei confuso sobre o tópico de classes aninhadas. Li a documentação da Oracle, mas é muito seca. Existem dois tipos: inner class e static nested class. Escrevi um pequeno exemplo, mas não entendo por que o código funciona de forma diferente. Aqui está meu código: ```java public class OuterClass { private String outerField = "campo externo"; // Inner class class InnerClass { void display() { System.out.println("Inner: " + outerField); } } // Static nested class static class StaticNestedClass { void display() { // Erro! Não vê outerField // System.out.println("StaticNested: " + outerField); } } } ``` Perguntas: 1. Por que `StaticNestedClass` não pode acessar `outerField` sem criar uma instância da classe externa, enquanto `InnerClass` pode? 2. Quando devo usar `static` para uma classe aninhada e quando não?