Anonymous Class


  • If You need Local Class only once, then you can use anonymous class. Anonymous class are Local Class except that they doesn't have name.
  • They enable you to declare and instantiate class at the same time. And lets you make your code more concise.

DECLARING ANONYMOUS CLASS:


  • While Local class are class declarations, Anonymous class are expression, which means you define the class in another expression.
  • Anonymous class are like Local class and can be declared in method/blocks.

public class HelloWorldAnonymousClasses 
{  
    interface HelloWorld 
    {
        public void greet();
        public void greetSomeone(String someone);
    }
  
    public void sayHello() 
    {
        class EnglishGreeting implements HelloWorld 
        {
            String name = "world";
            public void greet() 
            {
                greetSomeone("world");
            }
            public void greetSomeone(String someone) 
            {
                name = someone;
                System.out.println("Hello " + name);
            }
        }
      
        HelloWorld englishGreeting = new EnglishGreeting();
        
        HelloWorld frenchGreeting = new HelloWorld() 
        {
            String name = "tout le monde";
            public void greet() 
            {
                greetSomeone("tout le monde");
            }
            public void greetSomeone(String someone) 
            {
                name = someone;
                System.out.println("Salut " + name);
            }
        };
        
        HelloWorld spanishGreeting = new HelloWorld() 
        {
            String name = "mundo";
            public void greet() 
            {
                greetSomeone("mundo");
            }
            public void greetSomeone(String someone) 
            {
                name = someone;
                System.out.println("Hola, " + name);
            }
        };
        englishGreeting.greet();
        frenchGreeting.greetSomeone("Fred");
        spanishGreeting.greet();
    }

    public static void main(String... args) 
    {
        HelloWorldAnonymousClasses myApp =
            new HelloWorldAnonymousClasses();
        myApp.sayHello();
    }            
}

Because Anonymous class definition is an expression, there is semicolon after completion of class.

Comments