类加载顺序
Posted 专业开发人员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类加载顺序相关的知识,希望对你有一定的参考价值。
package api;
//1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
//2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
//3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
//4. 父类构造方法
//5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
//6. 子类构造方法
public class Box {
public static void main(String[] args) {
A ab = new B();
System.out.println("---");
ab = new B();
}
}
class A {
private static int numA;
private int numA2;
static {
System.out.println("A的静态字段 : " + numA);
System.out.println("A的静态代码块");
}
{
System.out.println("A的成员变量 : " + numA2);
System.out.println("A的非静态代码块");
}
public A() {
System.out.println("A的构造器");
}
}
class B extends A {
private static int numB;
private int numB2;
static {
System.out.println("B的静态字段 : " + numB);
System.out.println("B的静态代码块");
}
{
System.out.println("B的成员变量 : " + numB2);
System.out.println("B的非静态代码块");
}
public B() {
System.out.println("B的构造器");
}
}
以上是关于类加载顺序的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段