功能接口 -> 首先,让我们了解一下@FuntionalInterface
我们所知道的 JDK-1.8 的
一个新概念,即 Lambda Expersion 的概念:
Lambda 扩展
您需要了解有关 LamdaExpersion 的第一个概念,然后您才能轻松获取什么是功能接口角色..
// Java program to demonstrate lambda expressions
// to implement a user defined functional interface.
// A sample functional interface (An interface with
// single abstract method
interface FuncInterface
{
// An abstract function
void abstractFun(int x);
// A non-abstract (or default) function
default void normalFun()
{
System.out.println("Hello");
}
}
class Test
{
public static void main(String args[])
{
// lambda expression to implement above
// functional interface. This interface
// by default implements abstractFun()
FuncInterface fobj = (int x)->System.out.println(2*x);
// This calls above lambda expression and prints 10.
fobj.abstractFun(5);
}
}
Lambda Expersion 仅在您的定义接口只有1 个方法定义时才起作用,因为 java 编译器仅在接口中只有一个方法时才理解,那么您不需要在您的类中定义该方法,因此:注释出现在图片中,当您想要实施 Lambda Expersion 然后必须@FunctionInterface
在您的界面中使用。如果你错误地在你的接口中多写了一个方法,那么编译器会告诉你这是函数式接口。只需定义一种方法才能在您的应用程序中使用 Lamda Experssion
@FunctionalInterface
interface sayable{
void say(String msg);
}
public class FunctionalInterfaceExample implements sayable{
public void say(String msg){
System.out.println(msg);
}
public static void main(String[] args) {
FunctionalInterfaceExample fie = new FunctionalInterfaceExample();
fie.say("Hello there");
}
}