- 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
Post a Comment