0Pricing
Java Academy · Lesson

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, Alice

All lessons in this course

  1. Static Nested Classes
  2. Inner Classes and Outer Access
  3. Local and Anonymous Classes
  4. Choosing the Right Nesting Strategy
← Back to Java Academy