尝试复制Map时抛出NullPointerException

时间:2012-12-12 17:24:36

标签: java map nullpointerexception

我正在尝试创建一个XML元素对象并在构造期间分配一些属性,但我不断抛出NullPointerException,使用以下代码:

public XML.Element newElement(String name, Map<String, String> attributes) {
  return new ElementImpl(name, attributes);
}

调用

public class ElementImpl implements XML.Element {
  private Map<String, String> attributes = new LinkedHashMap<String, String>();

  public ElementImpl(String name, Map<String, String> attributes) {
    ...
    this.attributes.putAll(attributes);
  }

单步调试,显示“this”为空。谁能解释一下我哪里出错了?

1 个答案:

答案 0 :(得分:0)

我建议你删除putAll方法,而不是分配变量。这是构造函数,因此这是您第一次在此实例上放置数据。

此外,您确定在创建LinkedList时没有出现任何错误吗?至少我在Java中认识的类只能使用一个参数,你可以添加两个。

public class ElementImpl implements XML.Element {
  private Map<String, String> attributes;

  public ElementImpl(String name, Map<String, String> attributes) {
    this.attributes = attributes;
  }
}

改为写下来。我认为它会奏效。

如果下面的评论是写的,那么你可以试试这个。

this.attributes = new LinkedHashMap(attributes);

这样你就会得到你的副本。