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里的刚赋的值,
应该怎么做呢?
{
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里的刚赋的值,
应该怎么做呢?
或者将
public Map <String, Double[]> wordsMap = new HashMap <String, Double[]>();
改为
public static Map <String, Double[]> wordsMap = new HashMap <String, Double[]>()
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);
}
}
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 ,但在调用其之前还是要进行赋值操作的。
public Map<String, Double[]> getWordsMap(){ return wordsMap;}