-2

我正在尝试创建一个 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”为空。谁能解释我要去哪里错了?

4

1 回答 1

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);

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

于 2012-12-12T17:32:52.017 回答