它在java 8中首次引入。函数式接口可以定义为具有单个抽象方法的接口。这意味着 java 中的函数式接口仅提供单一的基本功能。但是,除了单个抽象方法之外,函数式接口还可以包含静态方法和默认方法。 java.util.function.Function、java.util.function.Predicate、UnaryOperator、BinaryOperator、Supplier、Consumer 是 java 中内置函数式接口的示例。
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
下面给出了基本语法:
public interface MyFunctionalInterface(){ // abstract method public void functionalMethod(); }
从上面的语法中,我们可以看到名为MyFunctionalInterface的接口只包含一个未实现的方法;这就是为什么它可以被视为一个函数式接口。 它还可以包含静态和默认方法,如下所示:
public interface MyFunctionalInterface(){ public default void defaultMethod(){ // default method logic goes here } public static void staticMethod(){ // static method logic goes here } // abstract method public void functionalMethod(); }
此外,可以使用 Lambda 表达式来实现函数式接口,如下所示:
MyFunctionalInterface functionalInterface = () ->{ // basic functionality logic goes here }
我们还可以使用注释或将接口声明为函数式接口。以下是如何使用注释声明函数式接口:
MyFunctionalInterface functionalInterface = () ->{ // basic functionality logic goes here }
@FunctionalInterface 是在 java 8 中引入的,用于在接口违反函数式接口规则时出现编译器级别错误。使用@FunctionalInterface注解声明接口使得接口具有功能性,如果使用多个抽象方法,则会产生编译错误。
以下是一些要点:
示例:
@FunctionalInterface public interface MyFunctionalInterface(){ // abstract method public void functionalMethod(); @Override public boolean equals(Object object); //method overridden from parent class }
由于上述接口重写了父类的方法,并且没有声明多个抽象方法,因此可以将其视为函数式接口。
现在我们将看到显示 java 函数式接口的声明和使用的 java 代码示例。
在这个例子中,我们将展示如何使用内置函数接口 java.util.function.function 接口。这是Function接口的声明。
界面:
package java.util.function; public interface Function<T,R>{ public <R> apply(T inputparams); }
为了使用上面的接口,我们需要在我们的类中实现它,如下所示。
代码:
import java.util.function.*; public class FunctionalInterfaceDemo implements Function<Integer, Integer>{ @Override public Integer apply (Integer n){ return n*n; } public static void main (String args[]){ FunctionalInterfaceDemo demo = new FunctionalInterfaceDemo (); Integer sqroot= demo.apply(12); System.out.println("Square root of 12 is " + sqroot); } }
输出:
在此示例中,我们将了解如何使用 lambda 表达式创建这些接口。
代码:
public class FunctionalInterfaceDemo{ public static void main (String args[]){ // creating functional Interface instance Runnable r = () -> {System.out.println ("Executing Thread........");}; new Thread(r).start(); } }
输出:
在这个例子中,我们将看到使用另一个内置接口消费者来迭代列表。
代码:
import java.util.function.*; import java.util.*; public class FunctionalInterfaceDemo{ public static void main (String args[]){ List<String> list = new ArrayList<String>(); list.add("One"); list.add("Two"); list.add("Three"); list.add("Four"); list.add("Five"); list.add("Six"); // Iterate arraylist using consumer list.forEach(new Consumer<String>(){ @Override public void accept(String item){ System.out.println(item); } }); } }
输出:
上面的文章让我们对java中的函数式接口有了清晰的认识。使用 java 8 函数式接口的主要优点是支持 lambda 表达式,从而消除了大量样板代码,从而开发出小型、高效且简洁的代码。
以上是Java 中的函数式接口的详细内容。更多信息请关注PHP中文网其他相关文章!