Anonymous class inner named class : Link, Link
  Inner anonymous class: Link, Link
Rules:
  • An anonymous class must always extend a super class or implement an interface but it cannot have an explicit extends or implements clause. (An independent parent)
  • An anonymous class must implement all the abstract methods in the super class or the interface. (Must use all the  methods of the parent with it's own.)
  • An anonymous class always uses the default constructor from the super class to create an instance. (Uses parents licenses or credit cards)
Uses:
  • Mostly used  as a Comparator or creating object on the fly.
  • Anonymous lasses had been used extensively used the past as  to implement listeners on GUIs.
In the example below, we see the steps how an inner-anonymous class is called via method in a parent class, without creating any instance of the anonymous class. This in contrast with the named-inner class, since named has privileged with its own signature from a method you need to create an object first. 
Example 1

import java.io.*;
public class Test_This {
public static void main(String[] args) throws IOException{
Process pp = new Process();
try{
pp.read_line();

}//try
catch(NumberFormatException e)
{ System.out.println("data was blank");}
}
}
class Process
{
public Process() { System.out.println("Process outer constructor");

}
public void read_line()
{
System.out.println("Reading Process outer class :");
//start of anonymous inner class
{
//String str = " greeting from inner class";
System.out.println(" Process inner anonymous reader class ");
}//end of anonymous inner class

}//end read_line method

}//end of class process

Example : 2
 

import java.io.*;
import java.util.*;//to use EnumSet, EnumMap classes
public class Test_This {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String str ="";
Process pp = new Process();
try{
System.out.print("Please write your name: ");
str = br.readLine();
pp.a_method(str);
}//try
catch(NumberFormatException e)
{ System.out.println("data was blank");}
}
}
class Process
{
public Process() { System.out.println("Process outer constructor");}
public int n2; String name="";
public void a_method(String str_method)
{
{
//contents of anonymous class
name = this.getClass().getName();
System.out.println("Received at anonymous inner class" + str_method);
}
System.out.println("Retreive class name at inner class: " + name);
}
//end method_1
}//end of class process