Java 8功能性接口示例
时间:2020-02-23 14:34:52 来源:igfitidea点击:
在本教程中,我们将看到Java中的功能性接口。
它与Java Lambda表达密切相关。
功能性接口是那些只有一个抽象方法的接口,它可以具有默认方法,静态方法,它也可以覆盖java.lang.Object类方法。
已经存在许多功能性接口。
例如:Runnable,Comparable。
我们可以使用Lambda表达式实现功能性接口。
让我们了解Runnable的经典示例:当我们需要创建一个线程并传递匿名的Runnable接口时,我们可以按照以下操作。
Thread t1=new Thread(new Runnable() { @Override public void run() { System.out.println("In Run method"); } });
上面的方法是创建线程的旧方法。
随着我们在可抵押接口中的单个抽象方法,我们可以将其视为功能性接口,因此我们可以使用Lambda表达式。
//Using lambda expression Thread t1=new Thread( ()->System.out.println("In Run method") );
让我们看看功能性接口的一个例子,
@FunctionalInterface public interface Decorable { //one abstract method void decorateWithCurtains(); //default method default void decorateWithPaints() { System.out.println("Decorating using paints"); } //Overriding method of java.lang.Object @Override public int hashCode(); }
Java本身可以识别功能性接口,但我们也可以通过使用@FunctionalInterface注释它来表示作为功能性接口的接口。
如果我们注释@FunctionalInterface,则应只有一个抽象方法,否则我们将获得编译错误。
package org.igi.theitroad; public class DecorableMain { public static void main(String[] args) { //Using lambada expression Decorable dec=()->{System.out.println("Decorating with curtains");}; dec.decorateWithCurtains(); } }
运行上面的程序时,我们将得到以下输出:
Decorating with curtains