黑马程序员技术交流社区
标题:
【厦门校区JavaEE就业8期-每日总结】Lambda方法引用
[打印本页]
作者:
厦门校区
时间:
2019-7-2 16:20
标题:
【厦门校区JavaEE就业8期-每日总结】Lambda方法引用
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
2.什么情况下可以使用lambda表达式来替换面向对象编码?
3.什么情况下lambda表达式可以简写?
4.方法引用分为哪几种形式?
作者:
郭付民
时间:
2019-7-2 18:07
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
答:函数式接口指的是有且仅含有一个抽象方法的接口,函数式接口和抽象方法有关,和接口的默认方法,私有方法,静态方法无关。
2.什么情况下可以使用lambda表达式来替换面向对象编码?
(1)使用Lambda必须要有接口,并且要求接口中有且仅有一个抽象方法。
(2)必须有上下文环境,才能推导出Lambda对应的接口。对应的两种情况,根据局部变量的赋值得知Lambda对应的接口或者根据调用方法的参数得知Lambda对应的接口。
3.什么情况下lambda表达式可以简写?
(1)参数类型可以省略。但是有多个参数的情况下,要全部省略。
(2)如果参数有且仅有一个,那么小括号可以省略。
(3)如果代码块的语句只有一条,可以省略大括号和分号,有return关键字,必须将return省略掉。
4.方法引用分为哪几种形式?
引用类的方法(静态方法)
类名::静态方法名
例如:Interger::paseInt
使用引用类的方法替代Lambda中的全部形参传递给静态方法
引用对象的方法(普通方法)
对象::方法名称
例如:System.out::println
使用引用对象的方法去替代Lambda表达式的时候,将Lambda中的全部形参传递给普通方法
引用类的实例方法(成员方法)
类名::方法名
例如:String::substring
使用类的实例方法替代Lambda表达式的时候,将Lambda中的第一个参数作为成员方法的调用者,其他参数作为方法的参数
引用构造器(构造方法)
类名::new
例如:Student::new
使用引用构造器去替代Lambda表达式的时候,将Lambda中的所有参数作为构造器参数
作者:
何凯
时间:
2019-7-2 19:03
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
函数式接口是对匿名内部类的一种简写方式,
它只能用于只有一个抽象方法的接口 ,不能用于抽象类,普通类,和有多个抽象方法的接口
2.什么情况下可以使用lambda表达式来替换面向对象编码?
当有我们要用一个方法它的参数是一个接口,且该接口只有一个抽象方法,
我们可以用Lambda表达式替换匿名内部类的方式
3.什么情况下lambda表达式可以简写?
()里的参数类型可以省略,如果省略则全部都要省略
()如果参数只有一个,可以省略()
如果代码块只有一行,可以省略{}和; 如果省略了,还有return那么return也必须要省略掉
4.方法引用分为哪几种形式?
分为,类名::静态方法 对象::普通方法 类名::成员方法 类名::new
作者:
辛全旺
时间:
2019-7-2 19:13
本帖最后由 辛全旺 于 2019-7-2 19:21 编辑
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
答: 有且只有一个抽象方法的接口。和抽象方法的个数有关,和私有方法,静态方法、默认方法无关。正确的函数式接口可以用@FunctionalInterface注释编译可以通过。
2.什么情况下可以使用lambda表达式来替换面向对象编码?
答: 当需要一个接口的实现类对象时,可以是赋值给变量、方法的形参、方法的返回值的情况,如果这个接口有且只有一个抽象方法,就可以使用lambda表达式。
3.什么情况下lambda表达式可以简写?
答: 1、参数列表可以省略数据类型,如果有多个参数,必须一起省略。
2、如果参数只有一个,小括号可以省略。
3、如果方法体语句只有一条,大括号和分号可以省略,此时如果有return,return必须省略。
4.方法引用分为哪几种形式?
答: 1、引用对象方法 对象::对象方法
2、引用静态方法 类名::静态方法
3、引用构造器 类名::new
4、引用类的实例方法(对象也在参数列表中引用成员方法) 类名::成员方法
作者:
王猛虎
时间:
2019-7-2 19:20
1.只含有一个抽象方法的接口为函数式接口,和抽象方法个数有关,其他无关
2.调用的方法参数含有接口,接口中有且只有一个抽象方法
3.参数类型可以省略,多个参数不能只省略一个
当参数列表只有一个参数的时候“()”可以省略
当代码块只有一条语句的时候“{}”和“;”可以省略,若含有return,return也必须省略
4.
类静态方法引用 Math::max
对象方法引用 new Student()::study
构造器引用 Student::new
类成员方法引用 String::subString
作者:
郑梅月
时间:
2019-7-2 19:37
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
答:函数式接口是表示一个接口下只有一个抽象方法的接口。
只和抽象方法有关。
与常量、默认方法、静态方法、私有方法无关。
2.什么情况下可以使用lambda表达式来替换面向对象编码?
答:(1)有一个接口
(2)接口中有且仅有一个抽象方法
(3)必须有上下文环境,才能推导出Lambda对应的接口
- 根据局部变量的赋值得知Lambda对应的接口
- 根据调用方法的参数得知Lambda对应的接口
3.什么情况下lambda表达式可以简写?
答:(1)参数类型可以省略。但是有多个参数的情况下,不能只省略一个
(2)如果参数有且仅有一个,那么小括号可以省略
(3)如果代码块的语句只有一条,可以省略大括号和分号,和return关键字
4.方法引用分为哪几种形式?
答:(1)引用类的静态方法
(2)引用对象的实例方法
(3)引用类的实例方法
(4)引用构造方法
作者:
孙健健
时间:
2019-7-2 19:52
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
函数式接口就是一个接口中有且只有一个抽象方法
函数式接口和抽象方法有关,和其他方法无关
2.什么情况下可以使用lambda表达式来替换面向对象编码?
只能是接口类型,有且只有一个抽象方法的时候就可以使用lanbda表达式
而且必须有上下文环境
3.什么情况下lambda表达式可以简写?
形参的类型可以省略
在参数只有一个的情况下,可以省略小括号
代码块只有一行的情况下,可以省略{}和;若这行代码有return,我们省略{}和;也必须将return省略
4.方法引用分为哪几种形式?
4种形式
引用类的静态方法
引用对象的普通方法
引用类的成员方法
引用构造器
作者:
邹楷能
时间:
2019-7-2 20:14
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
答:函数式接口就是只有一个抽象方法的接口称为函数式接口,和抽象方法个数有关,和方法名,接口名,其余方法无关。
2.什么情况下可以使用lambda表达式来替换面向对象编码?
答:存在接口,且接口为函数式接口的时候可以用lambda表达式。
3.什么情况下lambda表达式可以简写?
答:1.形式参数数据类型可以省略。2.当只有一个形式参数时可以省略小括号。3.当代码块只有一行的时候可以省略大括号和分号,如果该情况下有return,则return也必须省略。
4.方法引用分为哪几种形式?
答:四种形式:1.引用类的静态方法,类名::静态方法名。2.引用对象的方法,对象名::方法名。3.引用类的实例方法,类名::方法名。4.引用构造器,类名::new。
作者:
林振达
时间:
2019-7-2 20:43
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
一个接口只有一个抽象方法就是函数式接口,和抽象方法有关,和默认方法无关静态方法私有方法无关。
2.什么情况下可以使用lambda表达式来替换面向对象编码?
有一个接口且只有一个抽象方法,还有有上下文环境。
3.什么情况下lambda表达式可以简写?
没有参数就用()表示。只有一个参数就不要()只有一个输出语句就不要{}和分号。有return也要省略。
4.方法引用分为哪几种形式?
静态方法 普通方法 类方法 引用构造器
作者:
邱昊翔
时间:
2019-7-2 21:21
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
答:函数式接口指的是有且仅含有一个抽象方法的接口,函数式接口和抽象方法有关,
和接口的默认方法,私有方法,静态方法无关。
2.什么情况下可以使用lambda表达式来替换面向对象编码?
答:1.只有一个抽象方法的接口(函数式接口),
2.这个函数式接口需要有上下文实现关系。将这个接口作为局部变量的参数类型或者方法列表的参数类型。
3.什么情况下lambda表达式可以简写?
答:1.在表达式中的参数只有一个可以省略()
2.在表达式()中具有一个以上的参数时,可以省略它们的参数类型,但是如果省略不能只省略一个,必须全部省略。
3.在表达式中的方法体中只有一句代码时可以省略{},return,分号;且省略的内容要么一起省略,要么不省略。
4.方法引用分为哪几种形式?
答:1.引用类方法
2.引用对象实例方法
3.引用类的实例方法
4.引用构造器方法
作者:
朱铭恺
时间:
2019-7-2 21:33
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
有且只有一个抽象方法,仅和接口抽象方法数量有关,与其他类型方法无关
2.什么情况下可以使用lambda表达式来替换面向对象编码?
-有函数式接口
-方法调用接口
-有上下文环境
3.什么情况下lambda表达式可以简写?
-数据类型可省略
-参数只有一个时,小括号可省略
-代码块语句只有一条时,大括号,分号和return可省略
4.方法引用分为哪几种形式?
-类方法引用
-对象的实例方法引用
-类的实例方法引用
-构造器引用
作者:
陈伟锋
时间:
2019-7-2 21:33
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
只有一个抽象方法的接口就是函数式接口
和抽象方法的个数有关,和常量 静态方法 默认方法 私有方法无关
2.什么情况下可以使用lambda表达式来替换面向对象编码?
当面向对象编码是接口并且有且只有一个抽象方法时,可以使用lambda表达式来替换面向对象编码
3.什么情况下lambda表达式可以简写?
形参的数据类型可以省略
若形参只有一个的话,可以省略"()"
若代码块只有一行的话,可以省略"{}"和";"
若这行代码有return的话,我们将"{}"和";"省略的时候,也必须将return省略掉
4.方法引用分为哪几种形式?
引用类的方法(静态方法)
引用对象的方法(普通方法)
引用类的实例方法(成员方法)
引用构造器
作者:
许俊杰
时间:
2019-7-2 21:34
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
函数式接口:必须是接口且只有一个抽象方法
函数式接口与抽象方法有关,和默认方法、静态方法、私有方法无关
2.什么情况下可以使用lambda表达式来替换面向对象编码?
可推导时,必须有上下文环境
3.什么情况下lambda表达式可以简写?
1、没有参数时小括号内就留空
2、代码块的语句只有一条时,可以省略大括号和分号
3、形参的类型可以省略
4、有多个形参时,形参的类型如果要省略就全都省略
5、参数有且仅有一个时,小括号可以省略
4.方法引用分为哪几种形式?
1、引用类方法 格式: 类名 :: 静态方法
2、引用对象的实例方法 格式: 对象 :: 成员方法
3、引用类的实例方法 格式: 类名 :: 成员方法
4、引用构造器 格式: 类名 :: new
作者:
黎先帆
时间:
2019-7-2 21:54
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
函数式接口:必须是接口且只有一个抽象方法
和抽象方法有关,有且只能有一个抽象方法
和其他方法无关
2.什么情况下可以使用lambda表达式来替换面向对象编码?
使用Lambda必须要有接口,并且要求接口中有且仅有一个抽象方法
必须有上下文环境,才能推导出Lambda对应的接口
3.什么情况下lambda表达式可以简写?
形参的类型可以省略
若形参只有一个的话,可以省略"()"
若代码块只有一行的话,可以省略"{}"和";"
若这行代码有return的话,我们将"{}"和";"省略的时候,也必须将return省略掉
4.方法引用分为哪几种形式?
- 引用类的方法(静态方法)
- lambda写法 s -> Integer.parseInt(s)
- 类名::静态方法名
- 例如 : Integer::parseInt
- 注意:使用引用类的方法去替代lambda表达式的时候,将lambda中的全部形参传递给静态方法
- 引用对象的方法(普通方法)
- lambda写法 s -> System.out.println(s)
- 对象::方法名称
- 例如 : System.out::println
- 注意:使用引用对象的方法去替代lambda表达式的时候,将lambda中的全部形参传递给我普通方法
- 引用类的实例方法(成员方法)
- lambda写法 (s,x,y) -> s.subString(x,y)
- 类名::方法名
- 例如 : String::subString
- 注意:使用类的实例方法去替代lambda表达式的时候,将lambda中的第一个参数作为成员方法的调用者,其他参数作为方法的参数
- 引用构造器
- lambda写法 (name,age) -> new Student(name,age)
- 类名::new
- 例如 : Student::new
- 注意:使用引用构造器去替代lambda表达式的时候,将lambda中的所有参数作为构造器的参数.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2