考虑以下两个类:
A类从这里开始是同一个包中的一个单独的java文件:
public class A {
public void putIntoMap(int a[]){
Map <Integer, Integer> intMapObject = new HashMap<Integer,Integer>();
for (int i = 0 ; i < a.length ; i++){
// some code here
}
intMapObject.put(a[i], count);
}
}
B类从这里开始是同一个包中的一个单独的java文件:
public class B {
public static void main(String args[]){
A a = new A();
a.putIntoMap(arr); // assume arr is an array I already have
// Now I need to do loop over the Map and I need the `intMapObject` //object from above class A
// I need to do something like this
for (Map.Entry<Integer,Integer> e : intMapObject.entrySet()){
// some code here
}
}
如何访问B类中的intMapObject
对象?
答案 0 :(得分:2)
您无法访问另一种方法中声明的变量。如初。
但这并不意味着您无法将对象从一种方法传递到另一种方法。在这种情况下,我建议让putIntoMap
返回新地图:
// in A
public Map<Integer, Integer> putIntoMap(int a[]){
Map <Integer, Integer> intMapObject = // ...
// some code to put the stuff in the map here
return intMapObject;
}
// in B
A a = new A();
Map<Integer, Integer> theMap = a.putIntoMap(arr);
for(Map.Entry<Integer, Integer> e : theMap.entrySet()) {
// some code here
}
请注意,这不会传递实际对象,而是传递给它。在Java中,对象不存储在变量中。