0

ハッシュマップに現在の詳細フォーマッタを使用しています

key + "-" + value

そして、コードをデバッグすると..

import java.util.HashMap;


public class Test1
{
    public static void main(String[] args)
    {
        HashMap<String, Integer> wordcount = new HashMap<String, Integer>();       

        wordcount.put("foo", 1);
        wordcount.put("bar", 1);

        System.out.println("test"); // set a breakpoint here

    }
}

Eclipseは変数タブで言った..

Detail formatter error:
    key cannot be resolved to a variable
    value cannot be resolved to a variable  

System.out.println実際には、ブレークポイントが... だけwordcount HashMap<K,V> (id=16)でなく、そのコンテンツで停止したときの HashMap の値を確認したいと考えています。

4

1 に答える 1

1

詳細フォーマッタは、ローカル変数やメソッド引数ではなく、オブジェクト(およびそのプロパティ)の文字列表現を提供するためのものです。HashMapには「key」と「value」のフィールドがないため、コードは実際には意味がありません。

別のデバッグセッション中に、詳細フォーマッタをいくつかのローカル変数(HashMap.put()などのメソッド)と混同したと思います。

正しく機能するコードを取得するには、最初にput()などのHashMapメソッド内にブレークポイントを設定し、ブレークポイントに到達したときに詳細フォーマッターを実装するのが最も簡単な方法かもしれません。そうすれば、新しいコードを直接確認できます。

HashMapsの詳細フォーマッターの例:

StringBuilder buffer = new StringBuilder();
buffer.append("entries: ").append(this.size()).append("\n");
for (Map.Entry entry : entrySet()) {
    buffer.append("key: ").append(entry.getKey().toString()).append(", value:").append(entry.getValue().toString()).append("\n");
}
return buffer.toString();

これにより、例として次の出力が得られます。

entries: 2
key: foo, value:1
key: bar, value:1
于 2012-08-02T16:03:56.733 に答える