Класс A
объявляет константу C
следующим образом:
public class A {
public static final int C = 10;
}
Эта константа используется в методе M
класса B
следующим образом:
public class B {
public int M() {
return A.C;
}
}
В байт-кодах класса B
метод M
выглядит следующим образом:
public other()I
L0
LINENUMBER 29 L0
BIPUSH 10
IRETURN
L1
LOCALVARIABLE this Lcalc/B; L0 L1 0
MAXSTACK = 1
MAXLOCALS = 1
Таким образом, в байт-коде нет ссылки на класс A
, поскольку компилятор Java оптимизирует константные выражения во время компиляции (смотрите этот связанный вопрос).
Как избежать этого явления, чтобы собрать использование класса A
классом B
?