I have a test class:
public class Test {
private static class Nested1 {
Nested2 n2 = new Nested2();
}
private static class Nested2 {
Nested1 n1 = new Nested1();
}
}
As I understand, static
nested classes are regular static
member of the enclosing class, that are still top-level classes. When I compile the above code, I get four files:
Test$1.class
Test$Nested1.class
Test$Nested2.class
Test.class
Compiled from "Test.java"
class Test$Nested1 {
Test$Nested2 n2;
private Test$Nested1();
Test$Nested1(Test$1);
}
My questions:
Why do I have an additional class
Test$1.class
.class Test$1 { }
- Why does
Test$Nested1.class'
constructor have an input of type:Test$1
?
Test.java
public class Test {
private static class Nested1 {
Nested2 n2 = new Nested2();
}
private static class Nested2 {
Nested1 n1 = new Nested1();
}
}
I am using Java 1.8.