我正在尝试创建一个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”为空。谁能解释一下我哪里出错了?
答案 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);
这样你就会得到你的副本。