java无法从同一类获取静态变量的值

java无法从同一类获取静态变量的值,java,android,static,constants,static-methods,Java,Android,Static,Constants,Static Methods,我有一个AppConstants类,其中有一些静态变量和静态方法。可变的 public static final String BASE_URL = "http://www.somevalue.com/api/"; private static String MID_FIX_API; public static final String API_CALL = BASE_URL + getMidFixApi() + "/" + GET_KEY(appContext, KEY_FOR_KEY);

我有一个
AppConstants
类,其中有一些静态变量和静态方法。可变的

public static final String BASE_URL = "http://www.somevalue.com/api/";
private static String MID_FIX_API;
public static final String API_CALL = BASE_URL + getMidFixApi() + "/" + GET_KEY(appContext, KEY_FOR_KEY);
由于MID\u FIX\u API是私有的,所以我有它的公共getter/setter。 当我通过setter方法
AppConstants.setMidFixApi(“value”)从另一个类设置它的值时
并从其getter方法
AppConstants.getMidFixApi()获取其值到目前为止一切正常
但是
当在上面几行之后,我调用静态变量
API\u call
,如上面代码所示,该变量从变量
MID\u FIX\u API
的getter获取值,并返回null,尽管我们之前已将值传递给它

这是整行的顺序

AppConstants.setMidFixApi("getCategories");   // setting value
Log.e("InsideSuccess", "MID_FIX_API = " + AppConstants.getMidFixApi());  // working fine till here

Log.e("InsideSuccess", "API_URL = "+AppConstants.API_CALL);   // here I'm getting like this http://www.somevalue.com/api/null/somePostFix

请指出我做错了什么。

这与初始化顺序有关。调用
AppConstants.setMidFixApi(“getCategories”)
时,将在设置值之前初始化AppConstants类。因此,当初始化
API\u调用时,
MID\u-FIX\u-API
尚未分配…

如前所述,变量
API\u-CALL
初始化一次,当前值为
MID\u-FIX\u-API
,初始值为空

解决方法是创建一个静态方法(
getApiCall()
),该方法只计算先前静态初始化的值,看起来很简单:

public static String getApiCall(){
    return BASE_URL + getMidFixApi() + "/" + GET_KEY(appContext, KEY_FOR_KEY);
}

然后可以以一种简单的方式调用AppConstants。getApiCall()是一个编译时常量。感谢所有的帮助。因此,在调用
AppConstants.setMidFixApi(“getCategories”)
时,我也需要更改
API\u调用的值?