午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

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

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

問題描述

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

問題解答

回答1:

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

Java8這里加了一個(gè)語法糖:在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)文章:
主站蜘蛛池模板: 欧美成人免费视频 | 国产区在线视频 | 一区二区三区蜜桃 | 日韩v | 中文字幕第十一页 | 成年人黄色网址 | 日本少妇激情视频 | 一级片在线观看免费 | 亚洲视频一二三 | 国产在线专区 | 可以看的毛片 | 日韩中文在线观看 | 96sao| 久久久久黄| 国产v片在线观看 | 天天射寡妇射 | 久久午夜精品 | 亚洲一区在线免费 | 成人精品一区二区三区四区 | 色婷婷精品视频 | 六月伊人 | 久久精品18 | 欧美xxxx狂喷水欧美喷水 | 国产精品久久一区二区三区 | 亚洲最新偷拍 | 午夜av毛片 | 亚洲小视频 | 日韩精品天堂 | 国产日韩欧美综合在线 | www.久久.com| 日韩高清一区 | 成人高清在线视频 | 伊人热久久 | 欧美特黄一级大片 | 四虎影院黄色 | 国产欧美一区二区精品性色超碰 | 男人日女人免费视频 | 久久中文字幕视频 | 中文字幕第31页 | 天天草天天干 | 婷婷久久五月天 |