Java匿名内部类
匿名内部类的全称是Anonymous inner type。注意,这里的“类”指代的是“type”,而不是class这个关键字。抽象类和接口可以使用匿名内部类。
这里是一个小的匿名内部类的demo:
public class Q {
public static void main(String[] args) {
A a = new A();
a.use(new B() {
public void show() {
System.out.println("Anonymous inner type");
}
});
}
}
class A{
public void use(B b){
b.show();
}
}
abstract class B{
abstract void show();
}
解析:A类中定义了一个成员方法use(B b),该方法接收类型为B的参数。B类为抽象类,其中定义了一个抽象方法show()。B类不能直接创建对象,必须实现抽象类B中的抽象方法才能实例化。
创建抽象类B的代码如下。以下代码只是在堆内存中创建了该对象,但并没有将该对象的地址值赋值给引用变量。怎么理解引用变量?举个例子:X x = new X();中的x就是引用变量。引用变量就代表存在在堆内存中某个对象地址值的引用,就像人的名字一样。这里没有“名字”,当然就是匿名的了。
new B(){
public void show(){
System.out.println(“Anonymous inner type”);
}
}