Java匿名類和匿名函數(shù)的概念和寫法
前言
Lambda流式操作是Java8中重要的特性,lambda表達(dá)式核心概念為 函數(shù)式接口、::、-> 等基本語法,可以大大減少代碼量的編寫,使代碼更加優(yōu)雅
- 只有一個抽象函數(shù)的接口,就是函數(shù)式接口
- :: 可以稱之為域運算符,主要是用來獲取方法
- -> 的語法為 (變量或參數(shù))->{代碼體},是匿名函數(shù)的寫法。也叫變量和代碼的分隔符
- 當(dāng)只獲取一個方法屬性的時候 :: 和 -> 可以通用
介紹
接口:
- 接口可以定義在另一個類的內(nèi)部
- 接口中的方法都是抽象方法
- 接口中的常量都是靜態(tài)常量
類:
- 類可以定義在另一個類的內(nèi)部
- 也可以定義為內(nèi)部靜態(tài)類,使用 static 關(guān)鍵字
- 還可以定義為局部內(nèi)部類,定義在方法中
一、什么是Lambda表達(dá)式?
lambda表達(dá)式是為了簡寫代碼的寫法
二、什么是函數(shù)式接口?
只有一個抽象方法的接口就是函數(shù)式接口
//1.定義一個函數(shù)式接口。只有一個抽象方法的接口就是函數(shù)式接口 interface ILike{ void testLambda(); }
三、什么是匿名內(nèi)部類?
- 沒有類名
- 必須借助接口或父類
- 通過實例化函數(shù)式接口就可以完成匿名內(nèi)部類實現(xiàn)此接口并重寫方法
//5.匿名內(nèi)部類,沒有類名稱,必須借助接口 like = new ILike() { @Override public void testLambda() { System.out.println("i like lambda4"); } }; like.testLambda();
四、用 Lambda 簡化匿名內(nèi)部類的寫法
- 匿名內(nèi)部類是為了省去類名的寫法
- Lambda 簡化寫法不但可以省去類名,還可以省去接口名和函數(shù)名。因為只有一個抽象方法,可以直接實現(xiàn)并指向這個抽象方法和方法體
//6.用lambda簡化,因為接口中只有一個函數(shù),所以可以直接省略實例化的接口名和函數(shù)名 like = () -> { System.out.println("i like lambda5"); }; like.testLambda();
結(jié)論
匿名函數(shù)寫法和匿名類寫法的前提必須基于函數(shù)式接口匿名函數(shù)寫法和匿名類寫法其本質(zhì)是同一個東西,只是簡化寫法不同使用Lambda表達(dá)式簡寫匿名函數(shù)時,可以同時省略實現(xiàn)類名、函數(shù)名。除此外也可以使用傳統(tǒng)寫法
到此這篇關(guān)于Java匿名類和匿名函數(shù)的概念和寫法的文章就介紹到這了,更多相關(guān)java匿名類和匿名函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot創(chuàng)建maven多模塊項目實戰(zhàn)代碼
本篇文章主要介紹了SpringBoot創(chuàng)建maven多模塊項目實戰(zhàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09Mybatis使用update更新值為null時不生效問題解決
這篇文章主要介紹了Mybatis使用update更新值為null時不生效問題解決,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06spring boot創(chuàng)建項目包依賴問題的解決
本篇文章主要介紹了spring boot創(chuàng)建項目包依賴問題的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11