It's an (Nested) Anonymous Inner Class, but not what people typically call a Nested Class which, as far as I've noticed, usually refers to the non-local non-anonymous member classes. Though any class which isn't a Top-Level Class is of course a Nested Class.
The class is not "nested within itself" since new Test() { ... }
is actually an anonymous subclass of Test
.
I've included a diagram I found here and a pretty exhaustive list of examples in code.

import static java.lang.System.out;
@SuppressWarnings("unused")
public class Test {
static String staticField = "field in class static context";
String instanceField = "field in instance context";
static Object staticRef1 = /* Static Field Reference to ... */
/* ... Anonymous Inner Class created in static context */
new Object() {
public void print() {
out.println(staticField);
}
};
static Object staticRef2; /* Static Field Reference to ... */
static { /* static block ... */
String localVar_InStaticBlock = "local variable in static block context";
/* ... Anonymous Inner Class created in static block context */
staticRef2 = new Object() {
public void print() {
out.println(localVar_InStaticBlock);
out.println(staticField);
}
};
/* Local Reference to Anonymous Inner Class created in static block context */
Object localVar = new Object() {
public void print() {
out.println(localVar_InStaticBlock);
out.println(staticField);
}
};
}
public Object instanceRef1 = /* Instance Field reference to ... */
/* ... Anonymous Inner Class created in instance context */
new Object() {
public void print() {
out.println(instanceField);
out.println(staticField);
}
};
/* Instance Field reference to ... */
public Object instanceRef2;
{ /* instance block... */
String localVar_InInstanceBlock = "local variable in instance block context";
/* ... Anonymous Inner Class created in instance block context*/
instanceRef2 = new Object() {
public void print() {
out.println(localVar_InInstanceBlock);
out.println(instanceField);
out.println(staticField);
}
};
/* Local Reference to Anonymous Inner Class created in instance block context */
Object localVar = new Object() {
public void print() {
out.println(localVar_InInstanceBlock);
out.println(instanceField);
out.println(staticField);
}
};
}
/* Nested Inner Class */
class NestedInnerClass {
public void foo() {
out.println(instanceField);
out.println(staticField);
}
}
/* Nested Static Class */
static class NestedStaticClass {
public void foo() {
out.println(staticField);
}
}
void method() {
String localVar_InMethodContext = "local variable in method context";
/* Method-Local Inner Class */
class MethodLocalInnerClass {
void print() {
out.print(localVar_InMethodContext);
out.println(instanceField);
out.println(staticField);
}
}
Object methodLocalTest = new MethodLocalInnerClass();
// ...
}
}