2016-09-06 1 views
0

私はこのようなインスタンス変数としてマップを宣言した:静的マップが将来のメソッドで値を保持しないのはなぜですか?

public class JSONParser_GET { 
    public static Map<String, String> mapOfValues= new Map<String,String>(); 
... 

は今、私はこのマップに値を追加してい未来の方法があります。

@future(callout=true) 
public static void getRequest(String type,String e,String authHeader){ 
    mapOfValues.put(type,lookupname); 
    ... 

をしかし、値ではありません別の方法でアクセスしようとすると利用できます。それは静的なことではないですか? 静的インスタンス変数として宣言しているので、グローバルに利用可能でなければなりません。私はグローバルキーワードも使用しようとしました。しかし、それはうまくいかないようです。 何か助けていただければ幸いです。

+1

'@のfuture'は、新しい実行コンテキストを生成しますし、それがどこから来たのか知ることができません – EricSSH

答えて

0

ここに私が行ったことがあります。 これは、あるマップ自体の応答から値を取得することができないため、将来のメソッドが並行して実行されるようです。 私はgetRequestの前にメソッドを書いて、未来のハンドラのインスタンスを1つしか作成できないように未来を作りました。

@future(callout==true) public class JSONParser_GET { public static Map<String, String> mapOfValues= new Map<String,String>(); getRequest() getRequest() getRequest() }

public void getRequest{...}

1

私はそれがFuture annotationと関連していると思います。つまり、メソッドgetRequest()はすべての通常のメソッドではなく非同期で実行されます。

関連する問題