Параметры метода в двойной инициализации?
Я создаю 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
двойная скобка инициализирована?
2 ответа
Решение
Объявите ваши параметры как final
:
public void myFunction(final String key, final String value)
Кроме того, вы могли бы взглянуть на эффективность Java "Двойная инициализация скобки"?
Компилятор будет жаловаться, если вы используете не окончательные локальные переменные во внутренних классах, исправьте это следующим образом:
public void myFunction(final String key, final String value) {
myOtherFunction(
new JSONSerializer().serialize(
new HashMap<String , String>() {{
put("key", key);
put ("value", value.);
}}
)
);
}