学习笔记:
Java中只有内部类可以用static修饰,任何外部类用static修饰都会报错。
1.静态内部类跟静态方法一样,只能访问静态的成员变量和方法,不能访问非静态的方法和属性,但是普通内部类可以访问任意外部类的成员变量和方法
2.静态内部类可以声明普通成员变量和方法,而普通内部类不能声明static成员变量和方法。
3.静态内部类可以单独初始化
静态内部类使用场景:
假设有一个类有多个参数,若每次实例化可能需要初始化的参数都不同。
1、此时如果选择使用多个构造器来分别对应实例化,会导致编写的代码使用时很麻烦,需要反复去查找各个构造器参数的顺序等定义;
2、如果选择使用JavaBeans模式来编写代码(只提供一个无参数构造器,各个参数需要用对应的setter方法来定义)这会导致在构造过程中,JavaBean可能处于不一致状态,且无法将该类做成不可变的。
此时可以利用静态内部类以建造者模式来进行实例化,具体操作如下:(代码来自Effective Java第二章)