如何从一个类访问方法的局部变量到另一个类

时间:2017-11-18 11:07:36

标签: java

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)的局部变量 在另一个包中的另一个类中。我怎样才能访问?

3 个答案:

答案 0 :(得分:0)

方法执行完成后,局部变量死亡。

如果您想在其他方法中使用它们,您可以选择:

1)传递给那个方法,假设你在这里调用那个方法(你知道它的实例可能是或者在同一个类方法中)。

2)创建静态变量并在此处分配,以便在那里使用。但请确保在使用之前调用此方法。但我更喜欢第一个。除非你没有选择,否则选择静态。

答案 1 :(得分:0)

要从其他课程中获取结果,您可以:

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") ;

        }
    }

除非您无法从其他访问本地变量,因为它们是本地的

答案 2 :(得分:-1)

您可以将变量设置为全局变量,但将访问权限更改为private,然后使其getter和setter方法在其他类中访问它们。