load方法的调用时机
当类或类别加载到Runtime中时将会调用load方法,也就是说当类被引入进项目时会调用load,即在main函数执行前
,与这个类是否被初始化使用无关,每个类的load方法只会被自动调用一次。
调用顺序:
-
当父类和子类都实现load方法时,先调用父类的load方法后调用子类的load方法,父类->子类;
-
类中的load方法会先于类别扩展中的load方法调用,父类->子类->类别;
-
如果子类中没有实现load方法,也不会调用父类的load方法,也就是说父类的load方法不会调用两次;
-
当创建了多个类别扩展时,类别Category中的load方法调用顺序与类别在Compile Sources中出现的顺序一致,也就是说可能与在编译时文件的加载的顺序一致;
-
当有多个类时,其load方法的执行顺序也与类在Compile Sources中的顺序一致;
3
总结
- 父类先于子类调用;
- 类先于分类调用;
- load调用时机比较早,当load调用时,其他类可能还没加载完成,运行环境不安全;
- load方法是线程安全的,它使用了锁,我们应该避免线程阻塞在load方法;
网友评论