您的位置:首页 > 编程语言 > Java开发

【JAVA】Lambda接口&函数级接口

2019-06-13 01:19 811 查看

Lambda接口只用于函数级接口中,它常常被用在匿名类中,而
函数级接口————接口里面只有一个函数的接口。
标识接口————接口里面什么函数都没有的接口。

以上只是对相关概念的简述,具体解释要依靠具体代码来讲解:

//函数级接口
interface T1 {
void t();
}

//有返回类型的函数级接口
interface T2 {
//这里面有一个参数a
int t(int a);
}

//有返回类型的函数级接口
interface T3 {
//这里面有两个参数a和b
int t(int a,int b);
}

/*匿名类一般是用Lambda接口写的*/
public class Lambda {
//Lambda接口只用于函数级接口,那什么又是函数级接口?

//函数级接口:接口里面只有一个函数的接口。
//标识接口:接口里面啥函数都没有的接口。

public static void main(String[] args) {
//        我们可以先在这里new一个匿名类,
//        再在其后面加上一对大括号。
//        若我们要实现该类里面的方法,
//        就可以用Alt+Enter键对该方法进行实现。
//        在这里我们再运用多态的原理,直接用T类型引用该子类。
//        因为,我们new的这个对象就是T接口的子类或实现类。

//        如果我们这个接口里有很多函数,
//        我们就用List,如果只有一个,我们就不用这么写了。

//        T a=new T() {
//            @Override
//            public void t() {
//                System.out.println("Hello");
//            }
//        };

//对于函数级接口,我们不用上述的方法写。
//由于该方法,没有参数,我们就用圆括号来代表参数。
//实现的大括号写到箭头后面,如果大括号里只有一句话,
//我们就直接将这句话写进输出里头就可以了。
//箭头为"指向"的意思,
//因为这个接口里只定义了一个没参数的函数。
//而要实现的就是这个没参数的函数,
//我们的实现就写到箭头后面,直接写输出就行。

//箭头后面是T1接口的子类
T1 a = () -> System.out.println("Hello");
//而我们要调用该方法的话,因为是无参函数。
//我们这里就用t()来代替。
//函数级接口,用Lambda语法代替匿名类,会更紧凑一些。
//但是,该方法只能用于函数级接口
a.t();

//对于无参函数,如果输出语句比较多,就要加大括号。

//箭头后面是T1接口的子类
T1 b = () -> {
System.out.println("Hello");
System.out.println("Hello");
};

//对于下面有参数的函数级接口,如果箭头后只有一个语句,
//就直接写运算语句,且不用写返回值。
//如果是多行语句就需要加大括号,并且要写返回值。

//如果,函数级接口里面有了一个参数。
//我们就可以直接在等号后面定义一个不重名的参数,
//可以不用跟初始定义参数名一样。

//箭头后面是T2接口的子类
T2 c = aa -> aa * 2;
System.out.println(c.t(20));
//对大括号里头的程序进行执行之后,
//本来是要返回结果的,因为这个函数是返回的,
//所以自动就返回结果了。

//如果是多行语句就需要加大括号,并且有要写返回值。
//大括号里即是T2接口的子类
T2 d = cc -> { cc *= 2;cc += 2;return cc; };
System.out.println(d.t(30));

//如果,函数级接口有多个参数
//大括号里即是T3接口的子类
T3 e = (ab, ba) -> ab + ba;
System.out.println(e.t(20, 30));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: