]
Lambda Expressions требуют «окончательного» или «эффективного окончательного» переменных
] Сообщение об ошибке «переменная, используемая в выражении Lambda, должна быть окончательно или эффективно окончательно» указывает на то, что вариабельная, используемая в выражении Lampda, как и окончательно final.
в приведенном фрагменте кода:
private TimeZone extractCalendarTimeZoneComponent(Calendar cal, TimeZone calTz) { // Code missing cal.getComponents().getComponents("VTIMEZONE").forEach(component -> { // Code missing if (calTz == null) { calTz = TimeZone.getTimeZone(v.getTimeZoneId().getValue()); } }); // Code missing }
ошибка выдвигается, потому что переменная Caltz не объявляется как окончательная в выражении Lambda. Java требует, чтобы переменные, используемые в выражениях Lambda, были окончательными или эффективно окончательными, чтобы предотвратить потенциальные проблемы параллелизма.
]Почему требование существует
. Спецификация языка Java (§15.27.2). переменные, чьи захват, вероятно, введет проблемы с параллелизмом.
, по сути, Java стремится смягчить риски параллелизма, предотвращая мутацию захваченных переменных в выражениях Lambda. Это помогает обеспечить предсказуемое и правильное поведение в многопоточных средах.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3