A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.什么是函数式接口,函数式接口和什么有关,和什么无关?
函数式接口:只有一个抽象方法的接口。可以用@FunctionalInterface注解,(写在接口上可以检测该接口是否为函数式接口)
函数式接口和接口中的抽象方法有关和接口中的常量、静态方法、默认方法、私有方法无观。
2.什么情况下可以使用lambda表达式来替换面向对象编码?
a.只有一个抽象方法的接口(函数式接口),
b.这个函数式接口需要有上下文实现关系。将这个接口作为局部变量的参数类型或者方法列表的参数类型。

3.什么情况下lambda表达式可以简写?
a.当lambda表达式中的参数只有一个可以省略()
b.当lambda表达式()中具有一个以上的参数时,可以省略它们的参数类型,但是如果省略不能只省略一个,必须全部省略。
c.当lambda表达式中的方法体中只有一句代码时可以省略{},return,分号;且省略的内容要么一起省略,要么不省略。

4.方法引用分为哪几种形式?
a.引用类方法
b.引用对象实例方法
c.引用类的实例方法
d.引用构造器方法
回复 使用道具 举报
1.什么是函数式接口,函数式接口和什么有关,和什么无关?

有且仅有一个抽象类方法的接口,和抽象方法数量有关,和默认方法,静态方法无关

2.什么情况下可以使用lambda表达式来替换面向对象编码?

- 使用Lambda必须要有接口,并且要求接口中有且仅有一个抽象方法(函数式接口)
- 必须有上下文环境,才能推导出Lambda对应的接口
  - 根据局部变量的赋值得知Lambda对应的接口
    ?        Runnable r = () -> System.out.println("Lambda表达式");
  - 根据调用方法的参数得知Lambda对应的接口
    ?        new Thread(() -> System.out.println("Lambda表达式")).start();

3.什么情况下lambda表达式可以简写?

- 参数类型可以省略。但是有多个参数的情况下,不能只省略一个
- 如果参数有且仅有一个,那么小括号可以省略
- 如果代码块的语句只有一条,可以省略大括号和分号,和return关键字

4.方法引用分为哪几种形式?

引用类的静态方法   类名::静态方法

使用说明

Lambda表达式被类方法替代的时候,它的形式参数全部传递给静态方法作为参数

引用对象的成员方法    对象::成员方法

使用说明

Lambda表达式被对象的实例方法替代的时候,它的形式参数全部传递给该方法作为参数

引用类的成员方法    类名::成员方法

使用说明

    Lambda表达式被类的实例方法替代的时候

    第一个参数作为调用者

    后面的参数全部传递给该方法作为参数

引用构造方法    类名::new

使用说明

Lambda表达式被构造器替代的时候,它的形式参数全部传递给构造器作为参数
回复 使用道具 举报
LPY 中级黑马 2019-5-9 21:54:19
23#
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
        只有一个抽象方法的接口称为函数式接口。
        函数式接口与具体操作有关,与面向对象无关。

2.什么情况下可以使用lambda表达式来替换面向对象编码?
        当一个接口内有且仅有一个抽象方法,代码有上下文环境时,可以使用lambda表达式来替换面向对象编码。

3.什么情况下lambda表达式可以简写?
        ①只有一个参数时,可省略参数两边的“()”。
        ②参数类型可省略,但所有参数的参数类型要一起省略。
        ③只有一条方法语句时,可省略return关键字、“;”和方法体两边的“{}”。

4.方法引用分为哪几种形式?
        ①引用类的静态方法
        ②引用类的成员方法(当类的对象作为参数传入Lamda表达式中)
        ③引用对象的成员方法(当对象在Lambda表达式外面时)
        ④引用类的构造器
回复 使用道具 举报
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
答:
接口有且仅有一个抽象方法是函数式接口。
函数式接口和它本身的抽象方法有关,有且只有一个抽象方法。
和其他都无关。

2.什么情况下可以使用lambda表达式来替换面向对象编码?
答:
当方法的参数为函数式接口时可以使用lambda表达式来替换面向对象编码

3.什么情况下lambda表达式可以简写?
答:
形式参数可以省略数据类型,当形式参数只有一个时可以省略(),当方法体只有一句时 可以省略 ;和 {},如果有返回值 还可以省略return

4.方法引用分为哪几种形式?
答:
1、引用类方法 (引用类的静态方法)
2、引用对象的实例化方法
3、引用类的实例化方法
4、引用构造器 (引用构造方法)
回复 使用道具 举报
1.什么是函数式接口,函数式接口和什么有关,和什么无关?

答:
        有且只有一个抽象方法的接口叫函数式接口。
        和抽象方法数量有关,和默认方法,静态方法,私有方法无关。

2.什么情况下可以使用lambda表达式来替换面向对象编码?

答:必须同时满足以下两种情况:
        1.有一个函数式接口
        2.这个函数式接口必须作为局部变量的参数类型或者方法列表的参数类型(具有上下文关系)

3.什么情况下lambda表达式可以简写?

答:
        1.当形式参数只有一个时,可以省略小括号和参数类型
        2.参数类型可以全部省略,必须是全部
        3.当代码块只有一句时,可以省略大括号和分号,如果有return,也必须省略

4.方法引用分为哪几种形式?

答:
        1.引用类方法:         类名::静态方法
        2.引用对象的实例方法: 对象名::成员方法
        3.引用类的实例方法:   类名::成员方法
        4.引用构造器:         类名::new
回复 使用道具 举报
1.什么是函数式接口,函数式接口和什么有关,和什么无关?

有且仅有一个抽象类方法的接口,和抽象方法数量有关,和默认方法,静态方法无关

2.什么情况下可以使用lambda表达式来替换面向对象编码?

- 使用Lambda必须要有接口,并且要求接口中有且仅有一个抽象方法(函数式接口)
- 必须有上下文环境,才能推导出Lambda对应的接口
  - 根据局部变量的赋值得知Lambda对应的接口
    ?        Runnable r = () -> System.out.println("Lambda表达式");
  - 根据调用方法的参数得知Lambda对应的接口
    ?        new Thread(() -> System.out.println("Lambda表达式")).start();

3.什么情况下lambda表达式可以简写?

- 参数类型可以省略。但是有多个参数的情况下,不能只省略一个
- 如果参数有且仅有一个,那么小括号可以省略
- 如果代码块的语句只有一条,可以省略大括号和分号,和return关键字

4.方法引用分为哪几种形式?

引用类的静态方法   类名::静态方法

使用说明

Lambda表达式被类方法替代的时候,它的形式参数全部传递给静态方法作为参数

引用对象的成员方法    对象::成员方法

使用说明

Lambda表达式被对象的实例方法替代的时候,它的形式参数全部传递给该方法作为参数

引用类的成员方法    类名::成员方法

使用说明

    Lambda表达式被类的实例方法替代的时候

    第一个参数作为调用者

    后面的参数全部传递给该方法作为参数
引用构造方法    类名::new
使用说明
Lambda表达式被构造器替代的时候,它的形式参数全部传递给构造器作为参数
回复 使用道具 举报
1.什么是函数式接口,函数式接口和什么有关,和什么无关?
答:
有且仅有一个抽象方法的接口,和接口的抽象方法数量有关,和默认方法,静态方法无关

2.什么情况下可以使用lambda表达式来替换面向对象编码?
答:
只有一个抽象方法的接口(函数式接口),
这个函数式接口需要有上下文实现关系。将这个接口作为局部变量的参数类型或者方法列表的参数类型。

3.什么情况下lambda表达式可以简写?
答:
省略的规则
参数类型可以省略。但是有多个参数的情况下,不能只省略一个
如果参数有且仅有一个,那么小括号可以省略
如果代码块的语句只有一条,可以省略大括号和分号,和return关键字


4.方法引用分为哪几种形式?
答:
四种形式:
引用类方法
引用对象实例方法
引用类的实例方法
引用构造器方法
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马