nutz的源码是依赖log4j的,但是代码仍旧可以运行的原因是什么呀,看到通用知识中的log配置的解锁没看明白,,
然后Logs中加载插件的时候判断插件是否存在,其中在imp下并没有CustomLogAdapter,Slf4jLogAdapter这两个类,这个是用来自己扩展的吗
望好心人解答一下不胜感激。。😂
来自炫酷的 NutzCN
nutz的源码是依赖log4j的,但是代码仍旧可以运行的原因是什么呀,看到通用知识中的log配置的解锁没看明白,,
然后Logs中加载插件的时候判断插件是否存在,其中在imp下并没有CustomLogAdapter,Slf4jLogAdapter这两个类,这个是用来自己扩展的吗
望好心人解答一下不胜感激。。😂
来自炫酷的 NutzCN
因为会依次判断哪个LogAdapter可用,当log4j相关类不存在时,Log4jLogAdapter就是不可用的,然后,兜底的SystemLogAdapter总是可用的,所以,起码有一个LogAdapter是可用的
class文件里面可没有import,源文件中import都会完全展开。
所有类都需要用到的时候才加载
例如,加载Log4jLogAdapter类时,会加载它的超类,所有属性的类,然后执行其静态初始化块及所有静态属性的初始化。
上面的加载,不包括方法内引用的类
方法内引用的类是方法被调用的时候才会加载的,构造方法也是方法的一种。
在建立实例时,对应的构造内的所引用的类才会加载,而且仅限该构造方法,如果有10个构造方法,那么另外9个构造方法所引用的类不会加载
同理,去调用实例方法或静态方法的时候,它们引用/使用的类才会加载
例如a,b,c,三个方法,分别引用A,B,C三个类,那么,如果不调用b,c方法,那B,C类不会加载,B,C类存在与否,不影响a方法的执行(●°u°●) 」