public static final int FIRST_LINE_HEIGHT = ScreenUtil.dp2px(80);
我们项目中有以上这一段代码,ScreenUtil.dp2px 即获取 80dp 的高度,存在这个 FIRST_LINE_HEIGHT 数值偶现为 0 的情况,是否是因为 static final 加载时间导致的异常呢?
遇到过类似的问题,原因是多个类在 init 的时候互相引用 (有多个 public static final 的 property )。
例如下面代码打印出来 A 的值是 0
public class Main {
public static final int FIRST_LINE_HEIGHT = ScreenUtil.dp2px(80);
public static void main(String[] argu) {
}
}
class ScreenUtil {
public static int A = Main.FIRST_LINE_HEIGHT;
static {
System.out.println(A);
}
public static int dp2px(int i) {
return i + 1000;
}
}