6
我試圖改變java8 forEach循環內的布爾變量爲true,這是非最終的。但是我得到以下錯誤:在封閉範圍內定義的本地變量必須是最終的或有效的最終。Java8有效最終編譯時間錯誤非最終變量
如何解決此錯誤?
代碼:
boolean required = false;
這是我在函數創建的變量。
現在,當我試圖去改變它:
map.forEach((key, value) -> {
System.out.println("Key : " + key + " Value : " + value);
required = true;
});
我得到的錯誤:在一個封閉的範圍局部變量需要定義必須是最後的或有效的決賽。
爲什麼會出現此錯誤以及如何解決?
像這樣:最骯髒的方式:聲明一個元素的數組:[]需要布爾= {假};並設置此元素:required [0] = true; 我其實想要做的事情,但你說它看起來很髒。是否有任何其他方式來更改lambda表達式中的局部變量@tagirValeev –
@Siddharth,實際上沒有辦法改變局部變量。在'boolean [] required'的情況下,你不改變局部變量,而是改變堆對象。 –
爲了增強我的知識,可以請你解釋一下你通過改變頭對象而不是改變局部變量來實際上是什麼意思。 @tagirValeev –