访问在主类

时间:2015-09-09 03:59:12

标签: java dictionary hashmap

考虑以下两个类:

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对象?

1 个答案:

答案 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中,对象不存储在变量中。