1、所需類型不同
- 匿名內(nèi)部類:可以是接口,也可以是抽象類,還可以是具體類
- Lambda表達(dá)式:只能是接口
2、使用限制不同
- 如果接口中有且僅有一個(gè)抽象方法,可以使用Lambda表達(dá)式,也可以使用匿名內(nèi)部類
- 如果接口中多于一個(gè)抽象方法,只能使用匿名內(nèi)部類,而不能使用Lambda表達(dá)式
3、實(shí)現(xiàn)原理不同
- 匿名內(nèi)部類:編譯之后,產(chǎn)生一個(gè)單獨(dú)的.class字節(jié)碼文件
- Lambda表達(dá)式:編譯之后,沒有一個(gè)單獨(dú)的.class字節(jié)碼文件。對應(yīng)的字節(jié)碼會在運(yùn)行的時(shí)候動(dòng)態(tài)生成
package com.lambda; public class LambdaDemo { public static void main(String[] args) { useStudent(new Student() { @Override public void study() { System.out.println("具體類");//具體類 } }); useAnimal(new Animal() { @Override public void method() { System.out.println("抽象類");//抽象類 } }); useInter(() -> System.out.println("接口"));//接口 } //使用實(shí)體類作為方法的形參 public static void useStudent(Student s) { s.study(); } //使用抽象類作為方法的形參 public static void useAnimal(Animal a) { a.method(); } //使用接口作為方法的形參 public static void useInter(Inter i) { i.show(); } } interface Inter { void show(); } abstract class Animal { public abstract void method(); } class Student { public void study() { System.out.println("愛生活,愛Java"); } }
文章來源地址http://www.zghlxwxcb.cn/news/detail-691105.html
文章來源:http://www.zghlxwxcb.cn/news/detail-691105.html
到了這里,關(guān)于Lambda表達(dá)式和匿名內(nèi)部類的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!