java匿名内部类的总结

  匿名内部类也就是没有名字的内部类。

  通常在我们有名字的类的对象的情况,这时在栈空间是有一个变量名去指向你的堆空间的属性和一些方法,这时候就可以很正常的去调用你的属性和方法,这时候java虚拟机就可以识别,也不会将你的堆空间的内容给回收。

  但是如果是匿名的内部类,这时候就没有变量名去引用堆空间的内容。那么这个时候只能引用一次,引用完以后java虚拟机会将其当做是垃圾自动回收。

   而且使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。

   我们可以看看两个简单的例子:

   一、Thread类的匿名内部类实现:

public class User {
    public static void main(String[] args) {
        Thread t = new Thread() {
            public void run() {
                for (int i = 0; i < 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        t.start();
    }
}

     运行的结果:0,1,2,3,4

二、Runnable接口的匿名内部类实现:

public class User {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                for (int i = 0; i < 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        r.start();
    }
}

     运行的结果:0,1,2,3,4

猜你喜欢

转载自jiongsca.iteye.com/blog/2199930