60 lines
2.2 KiB
Java
60 lines
2.2 KiB
Java
package com.inmind.functional_interface02;
|
||
/*
|
||
学习的内容:函数式接口的概念
|
||
函数式接口在Java中是指:有且仅有一个抽象方法的接口。(今后自定义的主要的情况)
|
||
函数式接口:有且仅有一个必须被重写的抽象方法的接口.
|
||
|
||
注意:在java使用一个注解@FunctionalInterface来验证指定的接口是否是函数式接口
|
||
|
||
扩展:为何在一个接口中某些抽象方法不需要被重写??比如Comparator接口
|
||
在一个类中如果单继承和多实现,单继承的方法优先级高于接口中的方法定义,导致父类方法中
|
||
如果有跟接口中重名的方法实现的话,那么就相当于在子类中默认重写了接口的方法
|
||
------------------------------------------------------------------
|
||
函数式接口的使用:
|
||
1.作为参数
|
||
2.作为返回值
|
||
|
||
*/
|
||
public class Demo04 {
|
||
public static void main(String[] args) {
|
||
//匿名内部类的方式来调用getValue()方法
|
||
/*int value = getValue(new MyInterface() {
|
||
@Override
|
||
public int getSum(int a, int b) {
|
||
return a+b;
|
||
}
|
||
}, 10, 20);*/
|
||
// int value = getValue((int a, int b)->{return a+b;},10,20);
|
||
int value = getValue((a, b)-> a+b,10,20);
|
||
System.out.println("运行结果1:"+value);
|
||
//------------------------------------------
|
||
MyInterface instance = getInstance();
|
||
int result = instance.getSum(10, 20);
|
||
System.out.println("运行结果2:"+result);
|
||
}
|
||
//定义出一个函数式接口作为返回值类型,参数列表定义为无参的静态方法
|
||
public static MyInterface getInstance(){
|
||
/*MyInterface myInterface = new MyInterface() {
|
||
@Override
|
||
public int getSum(int a, int b) {
|
||
return a*b;
|
||
}
|
||
};*/
|
||
// MyInterface myInterface =(int a, int b)->{return a*b;};
|
||
// MyInterface myInterface =( a, b)-> a*b;
|
||
return (a, b)-> a*b;
|
||
}
|
||
|
||
|
||
|
||
//定义出一个有整数返回值,参数列表是函数式接口,2个整数的静态方法
|
||
public static int getValue(MyInterface myInterface, int a, int b) {
|
||
int sum = myInterface.getSum(a, b);
|
||
return sum;
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|