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)
的局部变量
在另一个包中的另一个类中。我怎样才能访问?
答案 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方法在其他类中访问它们。