Как это влияет, если мой код использует постоянное выражение, которое зависит от других постоянных выражений, определенных в разных пакетах? Указанные пакеты: < /p>
Код: Выделить всё
package foo;
public class Foo {
public static final boolean CONDITION = false;
}
< /code>
и < /p>
package bar;
import foo.Foo;
public class Bar {
public void test() {
if (Foo.CONDITION) {
System.out.println("This line of code could be eliminated.");
} else {
System.out.println("This line of code will be executed.");
}
}
}
< /code>
Очевидно, что если foo < /code> -package загружается во время выполнения из внешнего банка, компилятор технически не может просто предположить, что Foo. Условие , тогда как, если foo < /code> и bar на самом деле были в одном пакете, и True -Branch обязательно должна быть исключена (если компилятор вообще поддерживает устранение кода).
Не совсем уверен, как лучше всего выразить этот вопрос, но: как «закрыть», нужно, чтобы foo должен быть для завора в баре ? Неужели они должны быть в том же файле? Тот же пакет? Тот же баночный файл? Или это не имеет значения вообще (то есть, будет ли компилятор всегда рассматривать foo.donition постоянным и использовать значение, найденное в пути сборки во время компиляции)?
Подробнее здесь: https://stackoverflow.com/questions/238 ... limination