Java类加载

2017-04-06  本文已影响0人  业余的猫

今天读了thinking in java 中关于内部类部分,书上说了普通内部类中不能使用静态的字段或者方法,但书上并没有说的很清楚。细究一番,原来是类加载做的怪。

Java在第一次使用类的时候需要进行类加载。
什么叫第一次使用类,即使用类中的静态资源(静态属性或者静态方法)注:构造器也可以看作是静态方法。

综上所述

类对象在被创建(分配内存)之前就静态资源就已经被初始化完成了,假设内部类中允许存在静态资源,那么类加载器就回去加载它,既然是内部类,你得先加载外部类吧,加载外部类的时候需要先进行静态变量的初始化操作,这里包括内部类,所以这里就产生了矛盾,内部类的初始化需要依赖外部类的引用,所以编译器不支持内部类的静态域或者方法(注:静态方法只有在首次调用才会进行初始化)

上一篇 下一篇

猜你喜欢

热点阅读