亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java-ee - JAVA8 lambdas表達(dá)式 改變外面變量的值

瀏覽:65日期:2023-11-08 17:03:37

問(wèn)題描述

java-ee - JAVA8 lambdas表達(dá)式 改變外面變量的值如圖,我在外部定義了一個(gè)etotalPrice,然后再兩個(gè)for循環(huán)里想要改變這個(gè)值,結(jié)果給我報(bào)錯(cuò)了,該怎么解決?(NumberUtil.add和mutiplyu是基礎(chǔ)的+*保留2位小數(shù)的方法)

問(wèn)題解答

回答1:

在Java的經(jīng)典著作《Effective Java》、《Java Concurrency in Practice》里,大神們都提到:匿名函數(shù)里的變量引用,也叫做變量引用泄露,會(huì)導(dǎo)致線程安全問(wèn)題,因此在Java8之前,如果在匿名類內(nèi)部引用函數(shù)局部變量,必須將其聲明為final,即不可變對(duì)象。

Java8這里加了一個(gè)語(yǔ)法糖:在lambda表達(dá)式以及匿名類內(nèi)部,如果引用某局部變量,則直接將其視為final。

建議你重構(gòu)一下這段代碼:使用lambda返回一個(gè)值,賦給外面的變量。

回答2:

意思是totalPrice在lambada表達(dá)式中,應(yīng)該是final類型,final類型初始化后就不可以改變了,所以再次給totalPrice賦值會(huì)錯(cuò)誤。所以應(yīng)該重新定義一個(gè)變量保存新的值,而不是再次將值復(fù)制給totalPrice,如果改變變量不可以,就不要使用lambada表達(dá)式。

回答3:

final 的,當(dāng)然不可變啦。如果必須要變就不要用lambda,用lambda就別修改值

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 手机看片日韩国产一区二区 | 日本xxx免费视频 | 国产精品冒白浆免费视频 | 国产99在线a视频 | 国产日韩欧美一区二区三区综合 | 精品久久一区二区 | 亚洲精品一区二区ai换脸 | 东京加勒比中文字幕波多野结衣 | 欧美亚洲一区二区三区四 | 欧美成人高清性色生活 | 五月香婷婷| 国产区亚洲区 | 国产成人微拍精品 | 久久久久久99精品 | 曰批免费视频播放在线看片二 | 亚洲欧美精品综合中文字幕 | 极品白嫩无套视频在线播放张悠雨 | 亚洲a免费| 国产欧美亚洲精品a | 超级碰碰碰在线观看 | 国产成人a一区二区 | 亚洲国产观看 | 日韩亚洲欧美性感视频影片免费看 | 国产精品福利片 | 黄色一级免费大片 | 久久ww精品w免费人成 | 性做久久久久免费看 | 亚洲女初尝黑人巨高清在线观看 | 男人粗大一出一进女人下面视频 | 一区二区三区四区亚洲 | 久草视频一区 | 九九精品国产兔费观看久久 | 在线观看免费国产视频 | 欧美精品一级毛片 | 国产在线永久视频 | 免费能直接在线观看黄的视频 | 国产区久久| 国产免费大片 | 黄色午夜 | 青草悠悠视频在线观看 | 成人性毛片 |