為什么Java中l(wèi)ambda表達(dá)式不能改變外部變量的值?
lambda表達(dá)式不能改變外部變量的值即外部變量需要用final修飾(Java 8之前必須顯式的用final修飾),lambda表達(dá)式簡(jiǎn)單說(shuō)就是是匿名內(nèi)部類(lèi)的一個(gè)簡(jiǎn)化表達(dá)方式,Java方法參數(shù)傳遞是值傳遞(不是址傳遞)。不能改變外部變量的值,這句只是不能改變基本數(shù)據(jù)類(lèi)型的值,對(duì)于其它類(lèi)型的變量是可以改變變量存儲(chǔ)的值的,lambda表達(dá)式只是不能改變變量的指針值。這么做的原因就是為了延長(zhǎng)外部變量的生命周期,保持?jǐn)?shù)據(jù)同步。如果能被修改,那么lambda表達(dá)式中變量的值就有可能不是最新的,導(dǎo)致未知錯(cuò)誤。