内部类的.class文件形式

注意匿名对象和匿名内部类完全不是一个东西!!

public class A {
    
    public void show(){
        System.out.println("aaa....");
        //new B(){};
        new B();
    }    
 
    class B{
        public void show(){
            System.out.println("bbb...");
        }
    }    
 
}

这里 new B() 是个匿名对象,和匿名内部类没关系。生成的.class文件如下:

A$B.class表示的是成员内部类B。

public class A {
    
    public void show(){
        System.out.println("aaa....");
        new B(){};
        //new B();
    }    
 
    class B{
        public void show(){
            System.out.println("bbb...");
        }
    }    
 
}

这里 new B(){} 其实是个匿名内部类。生成的.class文件如下:

A$1.class表示的是匿名内部类,因为没有名字就用数字1,2..表示。

两者的区别就是一个大括号,如果不注意很容易犯错。

匿名内部类是一种局部内部类(在一个方法里面定义的内部类),在java中语句必须写在方法里,匿名
内部类其实就是一条特殊的语句。
new B() 只是一个匿名对象,和内部类没关系
new B(){} 是个匿名内部类
上面两条语句都必须放在某个方法中
——————— 
作者:hulinku 
来源:CSDN 
原文:https://blog.csdn.net/hulinku/article/details/78925799 
版权声明:本文为博主原创文章,转载请附上博文链接!

    原文作者:Amelia__Liu
    原文地址: https://blog.csdn.net/Amelia__Liu/article/details/88551776
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞