代码之家  ›  专栏  ›  技术社区  ›  Inzimam Tariq IT

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

  •  1
  • Inzimam Tariq IT  · 技术社区  · 7 年前

    我有一个 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_FIX_API 是私有的,所以我有公共的getter/setter。 当我通过setter方法从另一个类设置其值时 AppConstants.setMidFixApi("value"); 并从其getter方法中获取其值 AppConstants.getMidFixApi(); 到现在为止一切都很好
    但是
    当我在上面几行之后调用静态变量时,问题就出现了 API_CALL 如上面的代码所示,从变量的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
    

    请指出我做错了什么。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Lino    7 年前

    如前所述,变量 API_CALL MID_FIX_API 最初为空。

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

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

    然后可以用简单的方式调用它 AppConstants.getApiCall() .

        2
  •  1
  •   Per Huss    7 年前

    AppConstants.setMidFixApi("getCategories") AppConstants类将初始化 之前 该值已设置。因此,当 API_CALL 初始化后 MID_FIX_API