2016-09-06 42 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

所以,這就是我所做的...... 似乎未來的方法可能並行執行,因爲它不可能從一個Map本身的響應中獲取值。 因此,我在getRequest之前編寫了一個方法,並將其作爲未來,以便我只能創建未來處理程序的一個實例。

@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()方法將被異步執行,而不是所有通常的方法。

相關問題