国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

高唐企業(yè)網(wǎng)站建設(shè)北京seo代理計(jì)費(fèi)

高唐企業(yè)網(wǎng)站建設(shè),北京seo代理計(jì)費(fèi),做旅游網(wǎng)站的關(guān)注與回復(fù),營(yíng)銷網(wǎng)站的主題 定位 修改建議文章目錄一、匿名內(nèi)部類1. 語(yǔ)法格式2. 使用方法① 傳統(tǒng)方式② 匿名內(nèi)部類方式二、Lambda表達(dá)式1. 語(yǔ)法格式2. 使用方法① 匿名內(nèi)部類方式② Lambda表達(dá)式方式三、方法引用1. 語(yǔ)法格式2. 使用方法① 類型的靜態(tài)方法引用② 類型的構(gòu)造方法引用③ 類型的實(shí)例方法引用④ 對(duì)象的實(shí)例…

文章目錄

  • 一、匿名內(nèi)部類
    • 1. 語(yǔ)法格式
    • 2. 使用方法
      • ① 傳統(tǒng)方式
      • ② 匿名內(nèi)部類方式
  • 二、Lambda表達(dá)式
    • 1. 語(yǔ)法格式
    • 2. 使用方法
      • ① 匿名內(nèi)部類方式
      • ② Lambda表達(dá)式方式
  • 三、方法引用
    • 1. 語(yǔ)法格式
    • 2. 使用方法
      • ① 類型的靜態(tài)方法引用
      • ② 類型的構(gòu)造方法引用
      • ③ 類型的實(shí)例方法引用
      • ④ 對(duì)象的實(shí)例方法引用
  • 四、匿名內(nèi)部類、Lambda表達(dá)式、方法引用對(duì)比分析總結(jié)


一、匿名內(nèi)部類

匿名內(nèi)部類可以看作是特殊的局部?jī)?nèi)部類,其本質(zhì)就是一個(gè)繼承類(或?qū)崿F(xiàn)接口)的匿名子類。

匿名內(nèi)部類是在使用的時(shí)候動(dòng)態(tài)的指定方法體的邏輯,無(wú)需每次都去創(chuàng)建一個(gè)繼承類(或?qū)崿F(xiàn)接口)的子類。編譯器會(huì)在編譯階段自動(dòng)生成一個(gè)匿名子類。

1. 語(yǔ)法格式

匿名內(nèi)部類的語(yǔ)法格式:new 接口名|類名(){重寫方法}

其中,如果重寫方法為非必要的,原則上是可以沒(méi)有重寫方法部分的。

2. 使用方法

① 傳統(tǒng)方式

父子類:

public class ParentClass {public void aa(String str) {}public void bb(String str) {}
}
public class ChildClass extends ParentClass {@Overridepublic void aa(String str) {System.out.println("自定義方法體");}@Overridepublic void bb(String str) {System.out.println("自定義方法體");}
}
public class Test {public static void main(String[] args) {ParentClass ohj = new ChildClass();}
}

接口實(shí)現(xiàn)類:

public interface ParentInterface {void aa(String str);void bb(String str);
}
public class ChildClass implements ParentInterface {@Overridepublic void aa(String str) {System.out.println("自定義方法體");}@Overridepublic void bb(String str) {System.out.println("自定義方法體");}
}
public class Test {public static void main(String[] args) {ParentInterface ohj = new ChildClass();}
}

② 匿名內(nèi)部類方式

父子類:

public class ParentClass {public void aa(String str) {}public void bb(String str) {}
}
public class Test {public static void main(String[] args) {ParentClass obj = new ParentClass() {@Overridepublic void aa() {System.out.println("自定義方法體");}@Overridepublic void bb() {System.out.println("自定義方法體");}};}
}

接口實(shí)現(xiàn)類:

public interface ParentInterface {void aa(String str);void bb(String str);
}
public class Test {public static void main(String[] args) {ParentInterface obj = new ParentInterface() {@Overridepublic void aa() {System.out.println("自定義方法體");}@Overridepublic void bb() {System.out.println("自定義方法體");}};}
}

二、Lambda表達(dá)式

從Java8開(kāi)始,引入了Lambda表達(dá)式。

對(duì)于只有一個(gè)抽象方法的接口(函數(shù)式接口),可以直接使用Lambda表達(dá)式創(chuàng)建它的匿名實(shí)現(xiàn)類實(shí)例。

  • 使用匿名內(nèi)部類方式定義的內(nèi)部類:編譯之后,會(huì)生成一個(gè)單獨(dú)的class字節(jié)碼文件(外部類名$編號(hào).class);
  • 使用Lambda表達(dá)式定義的內(nèi)部類:編譯之后,不會(huì)生成一個(gè)單獨(dú)的class字節(jié)碼文件,對(duì)應(yīng)的字節(jié)碼會(huì)在運(yùn)行的時(shí)候動(dòng)態(tài)生成。

1. 語(yǔ)法格式

Lambda表達(dá)式的語(yǔ)法格式:(參數(shù)列表) -> {方法體}

省略寫法:

  • 小括號(hào)內(nèi)參數(shù)的參數(shù)類型可以省略
  • 小括號(hào)內(nèi)無(wú)參數(shù)時(shí),小括號(hào)不可省略
  • 小括號(hào)內(nèi)只有一個(gè)參數(shù)時(shí),小括號(hào)可以省略
  • 小括號(hào)內(nèi)有多個(gè)參數(shù)時(shí),小括號(hào)不可省略
  • 大括號(hào)內(nèi)有且只有一行語(yǔ)句時(shí),可以省略

2. 使用方法

public interface ParentInterface {void aa(String str);
}

① 匿名內(nèi)部類方式

public class Test {public static void main(String[] args) {ParentInterface obj = new ParentInterface() {@Overridepublic void aa(String str) {System.out.println("自定義方法體");}};}
}

② Lambda表達(dá)式方式

public class Test {public static void main(String[] args) {ParentInterface obj = str -> System.out.println("自定義方法體");}
}

三、方法引用

方法引用是對(duì)Lambda表達(dá)式進(jìn)一步簡(jiǎn)化,借用其他類的方法體,省去了寫方法體的過(guò)程。

對(duì)于方法體只有一行代碼的Lambda表達(dá)式(該行代碼為調(diào)用某個(gè)類或某個(gè)實(shí)例的方法時(shí)),可以簡(jiǎn)潔為更簡(jiǎn)單的方法引用的方式。

1. 語(yǔ)法格式

方法引用的語(yǔ)法格式:

語(yǔ)法種類語(yǔ)法格式示例參數(shù)對(duì)應(yīng)關(guān)系
類型的靜態(tài)方法引用類::靜態(tài)方法String::valueOf抽象方法的參數(shù)與靜態(tài)方法的參數(shù)順序?qū)?yīng)
類型的構(gòu)造方法引用類::newString::new抽象方法的參數(shù)與構(gòu)造方法的參數(shù)順序?qū)?yīng)
類型的實(shí)例方法引用類::實(shí)例方法String::replaceAll抽象方法的第一個(gè)參數(shù)為調(diào)用引用方法的實(shí)例對(duì)象

抽象方法的剩余參數(shù)與實(shí)例方法的參數(shù)順序?qū)?yīng)
對(duì)象的實(shí)例方法引用對(duì)象::實(shí)例方法s::replaceAll實(shí)例對(duì)象s為外部參數(shù)

抽象方法的參數(shù)與實(shí)例方法的參數(shù)順序?qū)?yīng)

需要注意:

  • 當(dāng)接口的抽象方法無(wú)返回值時(shí),方法引用的方法有無(wú)返回值都可以;
  • 當(dāng)接口的抽象方法有返回值時(shí),方法引用的方法也必須有返回值,且返回值類型 instanceof 接口的抽象方法返回值類型

2. 使用方法

① 類型的靜態(tài)方法引用

類型的靜態(tài)方法引用:類名::靜態(tài)方法

對(duì)應(yīng)Lambda表達(dá)式:(參數(shù)1,參數(shù)2,…) -> 類名.靜態(tài)方法(參數(shù)1,參數(shù)2,…)

@FunctionalInterface
public interface ParentInterface {String aa(String s);
}
public class Test {public static void main(String[] args) {// 類型的靜態(tài)方法引用ParentInterface parentInterface1 = String::valueOf;// 對(duì)應(yīng)Lambda表達(dá)式方式ParentInterface parentInterface2 = s -> String.valueOf(s);}
}

② 類型的構(gòu)造方法引用

類型的構(gòu)造方法引用:類::new

對(duì)應(yīng)Lambda表達(dá)式:(參數(shù)1,參數(shù)2,…) -> new 類名(參數(shù)1,參數(shù)2,…)

@FunctionalInterface
public interface ParentInterface {String aa(String s);
}
public class Test {public static void main(String[] args) {// 類型的構(gòu)造方法引用ParentInterface parentInterface1 = String::new;// 對(duì)應(yīng)Lambda表達(dá)式方式ParentInterface parentInterface2 = s -> new String(s);}
}

③ 類型的實(shí)例方法引用

類型的實(shí)例方法引用:類::實(shí)例方法

對(duì)應(yīng)Lambda表達(dá)式:(參數(shù)1,參數(shù)2,…) -> 參數(shù)1.靜態(tài)方法(參數(shù)2,…)

@FunctionalInterface
public interface ParentInterface {String aa(String s1, String s2, String s3);
}
public class Test {public static void main(String[] args) {// 類型的實(shí)例方法引用ParentInterface parentInterface1 = String::replaceAll;// 對(duì)應(yīng)Lambda表達(dá)式方式ParentInterface parentInterface2 = (s1,s2,s3) -> s1.replaceAll(s2,s3);}
}

④ 對(duì)象的實(shí)例方法引用

對(duì)象的實(shí)例方法引用:對(duì)象::實(shí)例方法

對(duì)應(yīng)Lambda表達(dá)式:(參數(shù)1,參數(shù)2,…) -> 對(duì)象.靜態(tài)方法(參數(shù)1,參數(shù)2,…)

@FunctionalInterface
public interface ParentInterface {String aa(String s1, String s2);
}
public class Test {public static void main(String[] args) {String s = "";// 對(duì)象的實(shí)例方法引用ParentInterface parentInterface1 = s::replaceAll;// 對(duì)應(yīng)Lambda表達(dá)式方式ParentInterface parentInterface2 = (s1,s2) -> s.replaceAll(s1,s2);}
}

四、匿名內(nèi)部類、Lambda表達(dá)式、方法引用對(duì)比分析總結(jié)

  • Lambda表達(dá)式是匿名內(nèi)部類的簡(jiǎn)寫(匿名內(nèi)部類為函數(shù)式接口的實(shí)現(xiàn)的這種)
  • 方法引用是Lambda表達(dá)式的簡(jiǎn)寫(Lambda表達(dá)式的方法體只有一行代碼且該行代碼方法調(diào)用)
http://aloenet.com.cn/news/33683.html

相關(guān)文章:

  • 鎮(zhèn)江特色seo的基本步驟包括哪些
  • 制作視頻網(wǎng)站開(kāi)發(fā)電商關(guān)鍵詞工具
  • 小米wordpress東莞seo網(wǎng)站推廣建設(shè)
  • 網(wǎng)站旁邊的小圖標(biāo)怎么做的無(wú)憂seo
  • win server wordpress關(guān)鍵詞優(yōu)化是什么工作
  • 藍(lán)色企業(yè)網(wǎng)站做網(wǎng)站推廣需要多少錢
  • 中國(guó)自適應(yīng)網(wǎng)站建設(shè)模板網(wǎng)站好還是自助建站好
  • 營(yíng)銷型單頁(yè)面網(wǎng)站制作百度電腦版下載
  • 網(wǎng)站google排名出現(xiàn)過(guò)幾分鐘seo是什么意思 為什么要做seo
  • 坊網(wǎng)站建設(shè)seo和sem的概念
  • 自己電腦上做網(wǎng)站南寧百度快速優(yōu)化
  • 自媒體代運(yùn)營(yíng)怎么收費(fèi)seo發(fā)外鏈的網(wǎng)站
  • 做網(wǎng)站的公司都有哪些崗位如何在手機(jī)上制作網(wǎng)站
  • 南寧市網(wǎng)站維護(hù)與推廣公司品牌的宣傳及推廣
  • 營(yíng)銷型網(wǎng)站建設(shè)和規(guī)劃培訓(xùn)班該如何建站
  • 淇縣網(wǎng)站建設(shè)谷歌下載
  • 上海網(wǎng)站開(kāi)發(fā)公司外包臨沂做網(wǎng)站建設(shè)公司
  • wordpress js 頁(yè)腳seo經(jīng)驗(yàn)是什么
  • 邢臺(tái)網(wǎng)站推廣費(fèi)用seo權(quán)威入門教程
  • 做網(wǎng)站當(dāng)生日禮物網(wǎng)絡(luò)營(yíng)銷五個(gè)特點(diǎn)
  • 承德做網(wǎng)站優(yōu)化百度識(shí)圖鑒你所見(jiàn)
  • 網(wǎng)站開(kāi)發(fā)怎么做常用的網(wǎng)絡(luò)營(yíng)銷平臺(tái)有哪些
  • 茂名百度搜索網(wǎng)站排名青島網(wǎng)頁(yè)搜索排名提升
  • 收款網(wǎng)站怎么建設(shè)網(wǎng)絡(luò)營(yíng)銷方案設(shè)計(jì)
  • 網(wǎng)頁(yè)制作公司網(wǎng)站網(wǎng)絡(luò)事件營(yíng)銷案例
  • 陜西省建設(shè)網(wǎng)三類人員證書查詢正規(guī)網(wǎng)站優(yōu)化公司
  • 北京市文化局政務(wù)網(wǎng)站建設(shè)項(xiàng)目有沒(méi)有推廣app的平臺(tái)
  • wordpress 新聞采集站百度做廣告怎么做
  • 自己網(wǎng)站可以加標(biāo)志嗎域名搜索引擎
  • 湖南手機(jī)版建站系統(tǒng)哪家好石家莊學(xué)院