Local and Anonymous Classes
Declare classes inside methods and create anonymous implementations of interfaces on the fly.
Local and Anonymous Classes
Local classes are defined inside a method. Anonymous classes are local classes with no name — they combine class declaration and instantiation. Both capture effectively-final local variables.
Local Class Declaration
A local class is declared inside a method body. It can access the enclosing class members and effectively-final local variables.
static void greet(String language) {
// Local class — defined inside the method
class Greeter {
String sayHello(String name) {
// Can access 'language' — it is effectively final
return switch (language) {
case "EN" -> "Hello, " + name;
case "ES" -> "Hola, " + name;
case "FR" -> "Bonjour, " + name;
default -> "Hi, " + name;
};
}
}
Greeter g = new Greeter();
System.out.println(g.sayHello("Alice"));
}
greet("ES"); // Hola, AliceAll lessons in this course
- Static Nested Classes
- Inner Classes and Outer Access
- Local and Anonymous Classes
- Choosing the Right Nesting Strategy