Как собрать данные об использовании константных выражений с помощью анализа байт-кода? - PullRequest
0 голосов
/ 17 апреля 2020

Класс 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?

...