四大函数式接口
lambda表达式 链式编程 函数式接口 Stream流式计算
函数式接口:只有一个方法的接口
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
//超级多FunctionalInterface
//简化编程模型,在新版本的框架底层大量应用
//foreach(消费者的函数式接口)
函数式接口Function
package com.xizi.function;
import java.util.function.Function;
public class Test1 {
public static void main(String[] args) {
// Function<String,String> function = new Function<String,String>(){
// @Override
// public String apply(String s) {
// return s;
// }
// };
// lambda简化
Function<String,String> function =( s)->{return s;};
System.out.println(function .apply("abc"));
}
}
断定型接口 有一个输入参数 返回值只能是布尔值
package com.xizi.function;
import java.util.function.Predicate;
public class Test2 {
public static void main(String[] args) {
//判断字符串是否为空
// Predicate<String> 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(" "));
}
}
Consumer消费型接口 只有输入 没有返回值
package com.xizi.function;
import java.util.function.Consumer;
public class Test3 {
public static void main(String[] args) {
Consumer<String> consumer = new Consumer<String>(){
@Override
public void accept(String string) {
System.out.println(string);
}
};
Consumer<String> consumer2 = (string)->{System.out.println(string);};
consumer.accept("ava");
consumer2.accept("ava");
}
}
Supplier 供给型接口 没有参数 只有返回值
@FunctionalInterface
public interface Supplier<T> {
T get();
}
package com.xizi.function;
import java.util.function.Supplier;
public class Test4 {
public static void main(String[] args) {
// Supplier supplier = new Supplier<Integer>(){
// @Override
// public Integer get() {
// return 12546;
// }
// };
Supplier supplier =()->{ return 12546;};
System.out.println(supplier.get());
}
}