public class A
{
public  Map<String, Double[]> wordsMap = new HashMap<String, Double[]>();……}
wordsMap后来被赋值了,我想在b.java里用到这些值,我这样写的:public class B
{
A  a = new A();
a.wordsMap.put("","");
}结果原来wordsMap在A.java里的值都没有带过来, 里面只有B.java里的刚赋的值,
应该怎么做呢?

解决方案 »

  1.   

    new 出来后还没赋值当然没了
      

  2.   

    在B.java中创建A  a = new A()后,在将wordsMap赋值后就有了
    或者将
    public  Map <String, Double[]> wordsMap = new HashMap <String, Double[]>(); 
    改为
    public static Map <String, Double[]> wordsMap = new HashMap <String, Double[]>()
      

  3.   


    LZ说的被赋值了,是在哪里被赋值的呢
    肯定是在方法里
    比如说
    下面这个例子,就是利用setValue这个方法给 m 赋值class Test2_1{
    public Map<String,double[]> m = new HashMap<String,double[]>();

    void setValue(){
    double[] d = {1.1,2.1};
    m.put("abc", d);
    }
    }
    你不可以写成class Test2_2{
    public Map<String,double[]> m = new HashMap<String,double[]>();
    m.put("abc", d);  //编译出错
    }
    这样编译是不会通过的,因为可以作为类成员的只有成员变量和方法所以,楼主说的赋值没有被带过去,可能是你觉得在类里的赋值了,怎么在另外一个类里面用不到,对吧所以,像下面这样写的话,就可以赋值了啊public class Test2 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Test2_1 t = new Test2_1();
    t.setValue();
    }}class Test2_1{
    public Map<String,double[]> m = new HashMap<String,double[]>();

    void setValue(){
    double[] d = {1.1,2.1};
    m.put("abc", d);
    }
    }
      

  4.   

    楼主在使用这个变量之前先要执行赋值的操作才行。我把赋值操作放在构造函数里是可以的。
    A.javaimport java.util.HashMap;
    import java.util.Map;public class A
    {
       public Map <String, Double[]> wordsMap = new HashMap <String, Double[]>(); 
       
       public A()
       {
           Double[] d=new Double[]{2.3,4.5};
           wordsMap.put("kes", d);
       }
    }B.javapublic class B
    {
      public static void main(String[] args)
    {
        A a=new A();
        Double[] d=a.wordsMap.get("kes");//可以得到值
        System.out.println(d);
    }
    }
    即便是设为static变量,只能说明可以用类名直接访问,A.wordsMap ,但在调用其之前还是要进行赋值操作的。
      

  5.   

        public class B { public static void main(String[] args) { A a=new A(); Double[] d=a.wordsMap.get("kes");//可以得到值  System.out.println(d); } }即便是设为static变量,只能说明可以用类名直接访问,A.wordsMap ,但在调用其之前还是要进行赋值操作的。
      

  6.   

    A.java写一个get方法,返回变量
    public Map<String, Double[]> getWordsMap(){   return wordsMap;}