Я обнаружил, что когда константа (static final, инициализируемая во время компиляции) объявляется в одном проекте, ссылки на нее в другом проекте заменяются литералом при компиляции.
Кажется, единственный способ избежать этого и иметь ссылки, относящиеся к полю константы, а не к литералу, - это объявить константу в классе (в отличие от интерфейса) и опустить "final", например:
public class MyClass {
public static String MY_CONSTANT = "The constant value";
}
К сожалению, я закодировал интерфейс, полный констант, до того, как понял это, и теперь, чтобы изменить константу, мы должны идентифицировать все проекты, которые ссылаются на нее, и перекомпилировать их. Боюсь, что-то ускользнет.
Кроме того, константа без модификатора final не совсем константа, не так ли?
Есть ли параметр компиляции, который может подавить замену постоянных ссылок литералами?