java lambda 表達(dá)式中的雙冒號(hào)的用法說明 ::
雙冒號(hào)運(yùn)算就是Java中的[方法引用],[方法引用]的格式是
類名::方法名
注意是方法名哦,后面沒有括號(hào)“()”噠。為啥不要括號(hào),因?yàn)檫@樣的是式子并不代表一定會(huì)調(diào)用這個(gè)方法。這種式子一般是用作Lambda表達(dá)式,Lambda有所謂懶加載嘛,不要括號(hào)就是說,看情況調(diào)用方法。
例如
表達(dá)式:
person -> person.getAge();
可以替換成
Person::getAge
表達(dá)式
() -> new HashMap<>();
可以替換成
HashMap::new
這種[方法引用]或者說[雙冒號(hào)運(yùn)算]對(duì)應(yīng)的參數(shù)類型是Function<T,R> T表示傳入類型,R表示返回類型。比如表達(dá)式person -> person.getAge(); 傳入?yún)?shù)是person,返回值是person.getAge(),那么方法引用Person::getAge就對(duì)應(yīng)著Function<Person,Integer>類型。
下面這段代碼,進(jìn)行的操作是,把List<String>里面的String全部大寫并返還新的ArrayList<String>,在前面的例子中我們是這么寫的:
@Testpublic void convertTest() { List<String> collected = new ArrayList<>(); collected.add('alpha'); collected.add('beta'); collected = collected.stream().map(string -> string.toUpperCase()).collect(Collectors.toList()); System.out.println(collected);}
現(xiàn)在也可以被替換成下面的寫法:
@Testpublic void convertTest() { List<String> collected = new ArrayList<>(); collected.add('alpha'); collected.add('beta'); collected = collected.stream().map(String::toUpperCase).collect(Collectors.toCollection(ArrayList::new));//注意發(fā)生的變化 System.out.println(collected);}
補(bǔ)充知識(shí):Java解析屬性配置文件并給占位符傳參
我就廢話不多說了,大家還是直接看代碼吧~
//注冊(cè)功能public void register(User user){//補(bǔ)齊數(shù)據(jù)user.setUid(CommonUtils.uuid());user.setStatus(false);user.setActivationCode(CommonUtils.uuid() + CommonUtils.uuid());try {userDao.save(user);} catch (Exception e) {throw new RuntimeException();}//發(fā)送郵件//加載配置文件Properties properties = new Properties();try {properties.load(this.getClass().getClassLoader().getResourceAsStream('email_template.properties'));} catch (IOException e1) {throw new RuntimeException();}String host = properties.getProperty('host');String username = properties.getProperty('username');String password = properties.getProperty('password');String from = properties.getProperty('from');String to = user.getEmail();String subject = properties.getProperty('subject');//把占位符用后面的參數(shù)替換,后面參數(shù)可變String content = MessageFormat.format(properties.getProperty('content'), user.getActivationCode());//發(fā)送郵件3步曲Session session = MailUtils.createSession(host, username, password);Mail mail = new Mail(from, to, subject, content);try {MailUtils.send(session, mail);} catch (Exception e) {throw new RuntimeException();}}
以上這篇java lambda 表達(dá)式中的雙冒號(hào)的用法說明 ::就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. jsp文件下載功能實(shí)現(xiàn)代碼2. 新手學(xué)python應(yīng)該下哪個(gè)版本3. 詳細(xì)總結(jié)Java for循環(huán)的那些坑4. python 使用Tensorflow訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)鳶尾花分類5. .net中string類型可以作為lock的鎖對(duì)象嗎6. Java進(jìn)行Appium自動(dòng)化測(cè)試的實(shí)現(xiàn)7. uni-app結(jié)合PHP實(shí)現(xiàn)單用戶登陸demo及解析8. python對(duì)批量WAV音頻進(jìn)行等長分割的方法實(shí)現(xiàn)9. 如何利用Python matplotlib繪制雷達(dá)圖10. ajax實(shí)現(xiàn)頁面的局部加載

網(wǎng)公網(wǎng)安備