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