| 顾名思义,没有名字的内部类。表面上看起来它们似乎有名字,实际那不是它们的名字。 A、继承式的匿名内部类。
 class Car {
 public void drive(){
 System.out.println("Driving a car!");
 }
 }
 
 class Test{
 public static void main(String[] args) {
 Car car = new Car(){
 public void drive(){
 System.out.println("Driving another car!");
 }
 };
 car.drive();
 }
 }
 结果输出了:Driving another car! Car引用变量不是引用Car对象,而是Car匿名子类的对象。
 B、接口式的匿名内部类。
 interface  Vehicle {
 public void drive();
 }
 
 class Test{
 public static void main(String[] args) {
 Vehicle v = new Vehicle(){
 public void drive(){
 System.out.println("Driving a car!");
 }
 };
 v.drive();
 }
 }
 上面的代码很怪,好像是在实例化一个接口。事实并非如此,接口式的匿名内部类是实现了一个接口的匿名类。而且只能实现一个接口。
 C、参数式的匿名内部类。
 class Bar{
 void doStuff(Foo f){}
 }
 
 interface Foo{
 void foo();
 }
 
 class Test{
 static void go(){
 Bar b = new Bar();
 b.doStuff(new Foo(){
 public void foo(){
 System.out.println("foofy");
 }
 });
 }
 }
 
 |