Java中的康納塔和費(fèi)羅切是什么?它們分別有什么作用呢?讓我們用簡(jiǎn)單易懂的語言來解釋一下。
康納塔表示為“->”,是Java8中引入的Lambda表達(dá)式的符號(hào)。Lambda表達(dá)式是一種匿名函數(shù),當(dāng)參數(shù)只有一個(gè)時(shí),可以省略小括號(hào);當(dāng)函數(shù)體只有一行時(shí),可以省略大括號(hào)。例如:
num ->num * num;
這個(gè)Lambda表達(dá)式的意思是,接收一個(gè)數(shù)值作為參數(shù),返回它的平方。使用Lambda表達(dá)式可以使代碼更加簡(jiǎn)練,同時(shí)能夠利用多核處理器帶來的優(yōu)勢(shì),使代碼運(yùn)行效率更高。
而費(fèi)羅切則表示為“::”,是Java的方法引用。通常情況下,我們會(huì)使用Lambda表達(dá)式來創(chuàng)建一個(gè)函數(shù)式接口的對(duì)象,但如果這個(gè)函數(shù)式接口所提供的方法已經(jīng)存在于某個(gè)對(duì)象中,那么就可以使用方法引用將其復(fù)用。例如:
list.stream().forEach(System.out::println);
這個(gè)例子中,我們使用了forEach方法遍歷一個(gè)List,而使用System.out::println作為參數(shù)就相當(dāng)于傳遞給forEach一個(gè)函數(shù)式接口的實(shí)例。這樣我們就可以避免重復(fù)編寫Lambda表達(dá)式,讓代碼更加簡(jiǎn)潔易懂。