-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」がnullであることを示しています。誰が私がどこで間違っているのか説明できますか?

4

1 に答える 1

0

putAll メソッドを削除し、代わりに変数を割り当てることをお勧めします。これはコンストラクターであるため、このインスタンスにデータを配置するのは初めてです。

また、LinkedList を作成するときにエラーが発生しないと確信していますか? 少なくとも私が Java で知っているクラスは、引数を 1 つしか取ることができず、引数を 2 つ追加します。

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 に答える