Avatar ·

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

Olá, colegas! Acabei de começar a estudar Java e me deparei com o tópico de classes aninhadas. Leio diferentes fontes, mas não consigo captar a diferença clara entre inner class e static nested class. Ambas são declaradas dentro de outra classe, mas se comportam de forma diferente. Por exemplo, tenho 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() { // Aqui não consigo acessar message diretamente // System.out.println(message); // Erro de compilação } } } ``` Perguntas: 1. Por que Inner consegue acessar o campo message, mas StaticNested não? Ambos estão dentro de Outer. 2. Como criar instâncias dessas classes corretamente? Tentei `new Outer().new Inner()` — funciona, mas parece estranho.