什么是函数式接口:
lamda表达式与方法引用只能用于函数式接口,函数式接口只包含一条接口方法。
-------------------------------------------undo-------------------------------------------------------------------
什么是lamda表达式:-------------------------------------------undo-------------------------------------------------------------------
什么是方法应用:-------------------------------------------undo-------------------------------------------------------------------
lamda表达式与方法应用的作用:-------------------------------------------undo-------------------------------------------------------------------
使用示例: 1、声明函数式接口@FunctionInterface注释标注在接口上表示该接口是函数式接口,会在IDE编译层面即可对该接口进行函数式接口约束。不标注即失去在IDE编译层面约束。
进行约束,IDE编译层面报错的函数式接口:
进行约束,IDE编译层面正确的函数式接口:
2、声明其他类型的静态方法要求:该静态方法形参与返回值与函数式接口形参与返回值一致
另外声明了一个形参不一致的方法用于使用对照比较。
class DemoClass { //形参与函数式接口不符,用于使用对比 public static String DemoClassNoArgs(){ return "DemoClass1"; } public static String DemoClassHaveArgs(String str){ return "DemoClass2 "+str; } }3、声明函数式接口方法调用方法
class DemoUser{ public String use(DemoInterface demoInterface,String str){ //函数式接口调用 return demoInterface.inter(str); } }4、以方法引用创建函数式接口对象
lamda表达式与方法引用创建函数式接口对象形参不一致时,IDE层面编译是立即报错。
以方法引用为例(编译报错):
lamda表达式与方法引用创建函数式接口对象形参一致时,IDE层面编译是正常。
以方法引用为例(编译正常):
5、以lamda表达式创建函数式接口对象极简化lamda表达式创建函数式接口对象:
完整化lamda表达式创建函数式接口对象:
6、lamda表达式与方法应用执行代码与结果显示执行代码:
public class main { public static void main(String[] args) { DemoUser demoUser=new DemoUser(); System.out.println("使用方法引用为函数式接口创建对象:"); String useByMethod = demoUser.use(DemoClass::DemoClassHaveArgs, "byMethod"); System.out.println(useByMethod); System.out.println("使用简化的lamda表达式为函数式接口创建对象:"); String useByLamda = demoUser.use(demoUserArgs -> demoUserArgs, "simple"); System.out.println(useByLamda); System.out.println("上面简化的lamda表达式复杂化的为函数式接口创建对象:"); useByLamda = demoUser.use((demoUserArgs) -> {return demoUserArgs;} , "complex"); System.out.println(useByLamda); } }
执行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)