小编1in*_*i5t的帖子

在编译时未评估的接口中定义的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;
  // ...
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,在运行时,当我调用时localStore.function(),temp被赋值为null,因为InternalModelInterface.COLUMN_PARAM1为null.这有意义吗?不InternalModelInterface.COLUMN_PARAM1应该在编译时进行评估并内联?

这适用于Android应用程序.提前致谢.

我将进一步解释澄清任何混淆.

DatabaseModel解析JSON响应时实例化该类的对象.DatabaseModel类中定义的常量表示在JSON响应中查找的键.

InternalModelInterface定义了在设备上的本地(缓存)数据库中使用的列名.由于多种原因(包括它们是SQLite中的非法列名),我不会将键重用为列名.

我使用接口而不仅仅是普通类的原因是接口还指定了需要由第三类LocalStore实现的所需方法.

java android compile-time-constant compile-time

7
推荐指数
1
解决办法
1497
查看次数