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.