2

我正在HashMap函数内创建一个带有双括号的内联:

public void myFunction(String key, String value) {
    myOtherFunction(
        new JSONSerializer().serialize(
            new HashMap<String , String>() {{
                put("key", key);
                put("value", value.);
            }}
        )
    );
}

我收到这些错误:

myClass.java:173: error: local variable key is accessed from within inner class; needs to be declared final
                        put("key", key);
                                   ^
myClass.java:174: error: local variable value is accessed from within inner class; needs to be declared final
                        put("value", value);
                                     ^
2 errors

如何将方法参数插入到Object初始化的双括号中?

4

2 回答 2

3

将您的参数声明为final

public void myFunction(final String key, final String value)

另外,您可能想看看Java“双大括号初始化”的效率?

于 2013-07-24T23:36:07.803 回答
1

如果您在内部类中使用非最终局部变量,编译器会报错,请使用以下方法修复它:

public void myFunction(final String key, final String value) {
    myOtherFunction(
        new JSONSerializer().serialize(
            new HashMap<String , String>() {{
               put("key", key);
               put ("value", value.);
            }}
        )
    );
}
于 2013-07-24T23:36:38.620 回答