This is example of inner class in Java. This is an anonymous inner class, where
An anonymous class is an inner class that does not have a name at all. And whose instance is being created at the time of its creation.
Read the Anonymous Classes documentation for more detail. And Override is Java annotation (not specific to Android). Read When do you use Java's @Override annotation and why?
Consider the example below
Let, you declare an interface HelloWorld
like below.
interface HelloWorld {
public void greet();
public void greetSomeone(String someone);
}
And you want to write a class which extends HelloWorld
class TestClass implements HelloWorld {
String name = "world";
@Override
public void greet() {
greetSomeone("world");
}
@Override
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hello " + name);
}
}
and instantiate it as
TestClass testClass = new TestClass();
Here instead-of above two steps (declaring a class and instantiate it), you can just declare an anonymous inner class, like
HelloWorld testClass = new HelloWorld() {
String name = "world";
@Override
public void greet() {
greetSomeone("world");
}
@Override
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hello " + name);
}
};
here testClass
is an object of an anonymous inner class which implements HelloWorld
.