Eclipse:详细格式化程序错误:<key>无法解析为变量</key>

时间:2012-08-02 15:31:10

标签: java eclipse

我正在使用hashmap的当前详细格式化程序

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的值,但是有内容。

1 个答案:

答案 0 :(得分: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