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; } }