This is called a local class. From Java Docs:
You can define a local class inside any block (see Expressions, Statements, and Blocks for more information). For example, you can define a local class in a method body, a for loop, or an if clause.
A local class has access to the members of its enclosing class... However, a local class can only access local variables that are declared final.