2017-10-30 6 views
1

私はいくつかの静的変数と静的メソッドを持つAppConstantsクラスを持っています。 MID_FIX_APIとしてjavaは同じクラスから静的変数の値を取得することができません

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.setMidFixApi("value");で別のクラスからその値を設定し、AppConstants.getMidFixApi();すべてが今まで大丈夫ですそのgetterメソッドから値を取得
しかし
問題は、上記の行の後に、私は静的変数API_CALLを示す呼び出したときに来て上記のコードは、変数MID_FIX_APIのゲッターから値を取得し、以前に値を渡したにもかかわらず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 

の全配列である私が間違ってやっている私を指すください。

+1

API_CALLはコンパイル時定数です。 – Prashant

+0

すべてのヘルパーに+1ありがとうございます。 –

答えて

1

が割り当てられていないが、最初はヌルであるMID_FIX_APIの電流値で、一度初期化されます。

仕事は周りのちょうどちょうどこのように簡単になり、以前の静的に初期化された値を算出する静的メソッド(getApiCall())を作成することです。そして、中に呼び出すことができます

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

簡単な方法AppConstants.getApiCall()

1

これには、初期化の順序が必要です。 AppConstants.setMidFixApi("getCategories")を呼び出すと、AppConstantsクラスはの前に初期化され、の値が設定されます。 API_CALLが初期化されるときしたがって、既に変数API_CALLを述べたようにMID_FIX_APIがまだ...

+0

だから 'AppConstants.setMidFixApi(" getCategories ")'を呼び出すときに 'API_Call'の値を変更する必要がありますか? –

+1

はい、それはあなたの問題を解決するでしょう! –

関連する問題