很多的源码中大量用到了内部类,对于这部分基础来做个回顾
分类
- 静态内部类
如:static class InnerClass{} - 成员内部类
如:private class InstaceClass{} - 局部内部类:定义在方法或表达式内部
- 匿名内部类
(new Thread(){}).start()
无论什么类型的内部类,都会编译成一个独立的.class文件,外部类和内部类之间用$间隔,其中匿名内部类使用数字进行编号
匿名内部类和静态内部类是比较常用的方式,在jdk中,使用内部类封装某种属性和操作的方式比较常见,内部类中还可以嵌套内部类
例如:ThreadLocalMap中又定义了Entry类
好处
在JDK源码中,在包内定义可见静态内部类的方式很常见,这样做的好处是:
- 作用域不会扩散到包外
- 可以通过" 外部类.内部类"的方式直接访问
- 内部类可以访问外部列中所有的静态属性和方法
评论区