簡體   English   中英

如何從一個類訪問方法的局部變量到另一個類

[英]How to Access local variable of the method from one class to another

public void processVmCreate(SimEvent ev) {
    int[] data = (int[]) ev.getData();
    int datacenterId = data[0];
    int vmId = data[1];
    int result = data[2];
}

我想在另一個包中的另一個類中訪問方法processVmCreate(SimEvent ev)的局部變量。 我怎么才能訪問?

方法執行完成后,局部變量死亡。

如果您想在其他方法中使用它們,您的選擇是:

1)傳遞給那個方法,假設你在這里調用那個方法(你說它的實例可能是或在同一個類方法中 )。

2)創建靜態變量並在此處分配,以便在那里使用。 但請確保在使用之前調用此方法。 但我更喜歡第一個。 除非您沒有選擇靜態。

要從其他課程中獲得結果,您可以:

1 - 將它們聲明為全局屬性,並通過它們的getter訪問它們,如下所示:

public class YourClass {

    int datacenterId = -1;
    int vmId = -1;
    int result = -1;


    public void processVmCreate(SimEvent ev) {
        int[] data = (int[]) ev.getData();
        datacenterId = data[0];
        vmId = data[1];
        result = data[2];
    }

    public int getDatacenterId() {
        return datacenterId;
    }


    public int getVmId() {
        return vmId;
    }

    public int getResult() {
        return result;
    }

}

2-或者你可以像這樣轉換你的方法並讓它返回一個hashMap:

   public HashMap<String, Integer>  processVmCreate(SimEvent ev) {
        int[] data = (int[]) ev.getData();
        HashMap<String, Integer> map = new HashMap<>() ; 
        map.put("datacenterId", data[0]) ;
        map.put("vmId", data[1]) ;
        map.put("result", data[2]) ;
        return map ;
    }

從另一個班級,您可以訪問您的attributs,如下所示:

 public class AnotherClass {
         //other code 
        public void anotherMethod(){
            YourClass yourClass = new YourClass() ;
            int datacenterId = yourClass.processVmCreate(simEvent).get("datacenterId") ;
            int vmId yourClass.processVmCreate(simEvent).get("vmId") ;
            int result yourClass.processVmCreate(simEvent).get("result") ;

        }
    }

除非,您無法從另一個類訪問本地變量, 因為它們是本地的

您可以將變量設置為全局變量,但將訪問權限更改為private,然后使其getter和setter方法在其他類中訪問它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM