因为内部类有一个重要特性,就是可以访问外部类的成员变量,既然是这样,那外部类就必须实例化。
但是在静态方法中,是可以不用new外部类的实例对象就可以运行。
所以这就造成了矛盾。
所以在静态方法中不能直接new内部类的实例对象,必须先实例化外部类的实例对象。
要想解决这个问题:
可以在外部类里面新建一个init方法,把new内部类的逻辑移植到init里面即可。
另外,注意到,内部类是不能访问局部变量的,如果想访问,必须在局部变量前面加上final.
因为内部类有一个重要特性,就是可以访问外部类的成员变量,既然是这样,那外部类就必须实例化。
但是在静态方法中,是可以不用new外部类的实例对象就可以运行。
所以这就造成了矛盾。
所以在静态方法中不能直接new内部类的实例对象,必须先实例化外部类的实例对象。
要想解决这个问题:
可以在外部类里面新建一个init方法,把new内部类的逻辑移植到init里面即可。
另外,注意到,内部类是不能访问局部变量的,如果想访问,必须在局部变量前面加上final.