函数式接口:只有一个方法的接口
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
超级多的@FunctionalInterface
可以简化编程模型,在新版本的框架底层大量应用,foreach(消费者类的函数式接口)
函数式接口:
function
:函数型接口,有一个输入参数,有一个输出
package function;
import java.util.function.Function;
/**
* @author admin
* @version 1.0.0
* @ClassName demo1.java
* @Description TODO
* @createTime 2021年05月31日 20:35:00
*/
public class demo1 {
public static void main(String[] args) {
/**
* 函数型接口,有一个输入参数,有一个输出
* 只要是函数式接口,可以用lambda表达式简化
* 工具类,输出输入的值
*/
/* Function function = new Function<String,String>() {
@Override
public String apply(String string) {
return string;
}
}; */
Function<String,String> function = (str)->{
return str;
};
System.out.println(function.apply("hjkl"));
}
}
Predicate
:断定型接口,有一个输入参数,返回值只能是布尔值
package function;
import java.util.function.Predicate;
/**
* @author admin
* @version 1.0.0
* @ClassName demo2.java
* @Description TODO
* @createTime 2021年05月31日 20:45:00
*/
public class demo2 {
public static void main(String[] args) {
// 判断字符串是否为空
/**
*断定型接口,有一个输入参数,返回值只能是布尔值
*/
/* Predicate predicate = new Predicate<String>() {
@Override
public boolean test(String str) {
return str.isEmpty();
}
}; */
Predicate<String> predicate = (str)->{ return str.isEmpty();};
System.out.println(predicate.test("jjj"));
}
}
Consumer
:消费型接口:只有输入,没有返回值
package function;
import java.util.function.Consumer;
/**
* @author admin
* @version 1.0.0
* @ClassName demo3.java
* @Description TODO
* @createTime 2021年05月31日 20:55:00
*/
public class demo3 {
public static void main(String[] args) {
/**
* 消费型接口:只有输入,没有返回值
*/
/* Consumer<String> consumer = new Consumer<String>() {
@Override
public void accept(String str) {
System.out.println(str);
}
}; */
Consumer<String> consumer = (str)->{
System.out.println(str);
};
consumer.accept("hjkl");
}
}
Supplier
:供给型接口:没有参数,只有返回值
package function;
import java.util.function.Supplier;
/**
* @author admin
* @version 1.0.0
* @ClassName demo4.java
* @Description TODO
* @createTime 2021年05月31日 21:01:00
*/
public class demo4 {
public static void main(String[] args) {
/**
* 供给型接口:没有参数,只有返回值
*/
/* Supplier supplier = new Supplier<Integer>() {
@Override
public Integer get() {
return 1024;
}
}; */
Supplier supplier = ()->{return 1024;};
System.out.println(supplier.get());
}
}