我正在使用BlueJ并测试HashMap类以查看其工作方式。下面是我用来测试该类的代码。在第一次尝试在构造函数中调用fillMyMap()
方法的过程中,第23行引发了错误。
我尝试在构造函数中删除对fillMyMap()
的调用。 HashMapTester对象被实例化,但是当我显式调用该方法时,抛出相同的NullPointerException
。
我尝试重写myMap
变量声明,但是使用其他语法会导致编译失败。
我已经测试了其他HashMap
代码(例如,来自Objects First和BlueJ),并且该代码运行良好,因此没有库,类或包问题。
我试图更改变量,以为我不小心碰到了保留字。相同的结果。此代码有什么问题?
import java.util.HashMap;
public class HashMapTester
{
//Fields
public HashMap<String, String> myMap;
// The constructor is supposed to construct a new
// HashMap object with variable name myMap.
// The fillMyMap() method call simply fills the HashMap
// with data prior to testing it.
public HashMapTester()
{
HashMap<String, String> myMap = new HashMap<String, String>();
fillMyMap();
}
// fillMyMap() methods is supposed to fill up
// the keys and values of the HashMap<String, String>
// object.
public void fillMyMap()
{
myMap.put("doe", "A deer...a female deer."); //<-- ERROR OCCURS HERE!
myMap.put("ray", "A drop of golden sun.");
myMap.put("me", "A name I call myself.");
myMap.put("fah", "A long, long way to run.");
myMap.put("sew", "A needle sewing thread.");
myMap.put("la", "A note to follow sew.");
myMap.put("tea", "It goes with jam and bread.");
}
public String sing(String note)
{
String song = myMap.get(note);
return song;
}
}
最佳答案
HashMap<String, String> myMap = new HashMap<String, String>();
在构造函数中声明局部变量,而不实例化字段变量。
采用
this.myMap = new HashMap<String, String>();