Bootstrap

死磕Lambda表达式(二)

public interface Callable {

V call() throws Exception;

}

Callable接口只有一个call抽象方法,所以它也是函数式接口。

你可以已经发现了,Callable接口上有一个注解@FunctionalInterface,该注解用于标志该接口是一个函数式接口。如果你编写了一个不是函数式接口的接口,并且加了@FunctionalInterface注解,编译就会报错,需要注意一下。

看了以上的例子,是不是撸胳膊挽袖子准备大干一场?别急,检验出真知,我们先简单测试一下。以下三个接口,哪些是函数式接口,哪些不是函数式接口?

  1. Runnable

package java.lang;

@FunctionalInterface

public interface Runnable {

public abstract void run();

}

  1. Task

package com.sun.jmx.snmp.tasks;

public interface Task extends Runnable {

public void cancel();

}

  1. Serializable

package java.io;

public interface Serializable {

}

请思考片刻…

;