final static String, определенная в интерфейсе, не оцениваемом во время компиляции - Android

У меня есть два класса и интерфейс (например, DatabaseModel , LocalStore и InternalModelInterface). Они определены следующим образом:

public class DatabaseModel {
  // ...
  public static final String KEY_PARAM1 = "param1";
}

public class LocalStore implements InternalModelInterface {
  // ...
  public void function () {
    String temp = InternalModelInterface.COLUMN_PARAM1;
  }
}

public interface InternalModelInterface {
  public static final String COLUMN_PARAM1 = DatabaseModel.KEY_PARAM1;
  // ...
}

Проблема, с которой я столкнулся, заключается в том, что во время выполнения, когда я вызываю localStore.function () , temp присваивается значение null, как InternalModelInterface.COLUMN_PARAM1 имеет значение null. Имеет ли это смысл? Не должно InternalModelInterface. COLUMN_PARAM1 быть оцененным во время компиляции и встроенным?

Это для приложения Android. Заранее спасибо.

Я объясню дополнительно, чтобы прояснить любую путаницу.

Объекты класса DatabaseModel создаются при анализе ответа JSON. Константы, определенные в классе DatabaseModel , представляют ключи, которые нужно искать в ответе JSON.

InternalModelInterface определяет имена столбцов, используемые в локальной (кэшированной) базе данных на устройстве. . По нескольким причинам (включая то, что ключи являются недопустимыми именами столбцов в SQLite), я не использую повторно ключи в качестве имен столбцов.

Причина, по которой я использую интерфейс, а не просто класс, заключается в том, что интерфейс также указывает требуемые методы, которые должны быть реализованы третьим классом LocalStore.

7
задан Amit Vaghela 30 July 2016 в 12:23
поделиться