1 Java8 函数式接口的介绍
完全包含一种抽象方法的接口称为函数式接口。函数式接口可以具有任意数量的默认静态方法,但只能包含一个抽象方法。函数式接口还可以声明对象类的方法。
函数式接口也称为单一抽象方法接口或SAM接口。它是Java8 中的新功能,有助于实现函数编程方法。
2 Java8 函数式接口的案例1
/**
* https://www.jhelp.net
*/
@FunctionalInterface
interface sayable{
void say(String msg);
}
public class FunctionalInterfaceExample implements sayable{
public void say(String msg){
System.out.println(msg);
}
public static void main(String[] args) {
FunctionalInterfaceExample fie = new FunctionalInterfaceExample();
fie.say("Hello there");
}
} 输出结果为:
Hello there3 Java8 函数式接口的案例2
函数式接口可以具有对象类的方法,看下面案例:
/**
* https://www.jhelp.net
*/
@FunctionalInterface
interface sayable{
void say(String msg); // abstract method
// It can contain any number of Object class methods.
int hashCode();
String toString();
boolean equals(Object obj);
}
public class FunctionalInterfaceExample2 implements sayable{
public void say(String msg){
System.out.println(msg);
}
public static void main(String[] args) {
FunctionalInterfaceExample2 fie = new FunctionalInterfaceExample2();
fie.say("Hello there");
}
} 4 Java8 函数式接口的错误示范
函数式接口只有在没有任何抽象方法时才能扩展另一个接口。
/**
* https://www.jhelp.net
*/
interface sayable{
void say(String msg); // abstract method
}
@FunctionalInterface
interface Doable extends sayable{
// Invalid '@FunctionalInterface' annotation; Doable is not a functional interface
void doIt();
} 输出结果为:
以上代码编程错误5 Java8 函数式接口的案例3
函数式接口扩展为非功能接口。
/**
* https://www.jhelp.net
*/
interface Doable{
default void doIt(){
System.out.println("Do it now");
}
}
@FunctionalInterface
interface Sayable extends Doable{
void say(String msg); // abstract method
}
public class FunctionalInterfaceExample3 implements Sayable{
public void say(String msg){
System.out.println(msg);
}
public static void main(String[] args) {
FunctionalInterfaceExample3 fie = new FunctionalInterfaceExample3();
fie.say("Hello there");
fie.doIt();
}
} 输出结果为:
Hello there
Do it now6 Java8 预定义函数式接口
Java通过使用Lambda和方法引用提供了预定义的函数式接口来处理函数编程。
您还可以定义自己的自定义功能接口。以下是放置在java.util.function包中的功能接口的列表。
| 接口 | 描述 |
|---|---|
| BiConsumer<T,U> | 表示一个接受两个输入参数且不返回结果的操作。 |
| Consumer<T> | 表示一个接受单个参数且不返回结果的操作。 |
| Function<T,R> | 代表一个接受一个参数并返回结果的函数。 |
| Predicate<T> | 表示一个参数的谓词(布尔值函数)。 |
| BiFunction<T,U,R> | 代表一个接受两个参数并返回结果的函数。 |
| BinaryOperator<T> | 表示对两个相同数据类型的操作数的操作。它返回与操作数相同类型的结果。 |
| BiPredicate<T,U> | 表示两个参数的谓词(布尔值函数)。 |
| BooleanSupplier | 表示布尔值结果的提供者。 |
| DoubleBinaryOperator | 表示对两个双精度型操作数的运算,并返回双精度型值。 |
| DoubleConsumer | 表示一个接受单个double类型参数且不返回结果的操作。 |
| DoubleFunction<R> | 代表一个接受双精度类型参数并产生结果的函数。 |
| DoublePredicate | 表示一个双精度类型参数的谓词(布尔值函数)。 |
| DoubleSupplier | 代表双重结果的供应商。 |
| DoubleToIntFunction | 表示一个接受双精度类型参数并产生int类型结果的函数。 |
| DoubleToLongFunction | 代表一个接受双精度类型参数并产生长型结果的函数。 |
| DoubleUnaryOperator | 表示对单个双精度类型操作数的操作,该操作数产生双精度类型的结果。 |
| IntBinaryOperator | 表示对两个int类型操作数的运算,并返回int类型结果。 |
| IntConsumer | 表示一个接受单个整数参数且不返回结果的操作。 |
| IntFunction<R> | 表示一个接受整数参数并返回结果的函数。 |
| IntPredicate | 表示一个整数参数的谓词(布尔值函数)。 |
| IntSupplier | 表示整数类型的供应商。 |
| IntToDoubleFunction | 表示一个接受整数参数并返回双精度值的函数。 |
| IntToLongFunction | 表示一个接受整数参数并返回long的函数。 |
| IntUnaryOperator | 表示对产生整数结果的单个整数操作数的运算。 |
| LongBinaryOperator | 表示对两个长型操作数的运算,并返回长型结果。 |
| LongConsumer | 表示一个接受单个long类型参数且不返回结果的操作。 |
| LongFunction<R> | 代表一个接受长型参数并返回结果的函数。 |
| LongPredicate | 表示一个长型参数的谓词(布尔值函数)。 |
| LongSupplier | 代表长型结果的供应商。 |
| LongToDoubleFunction | 代表一个接受长型参数并返回双精度型结果的函数。 |
| LongToIntFunction | 表示一个接受长型参数并返回整数结果的函数。 |
| LongUnaryOperator | 表示对单个long类型操作数的操作,该操作返回long类型结果。 |
| ObjDoubleConsumer<T> | 表示一个操作,该操作接受一个对象和一个双精度参数,并且不返回任何结果。 |
| ObjIntConsumer<T> | 表示一个接受对象和整数参数的操作。它不返回结果。 |
| ObjLongConsumer<T> | 表示一个接受对象和长参数的操作,不返回任何结果。 |
| Supplier<T> | 代表结果的提供者。 |
| ToDoubleBiFunction<T,U> | 代表一个接受两个参数并产生双精度类型结果的函数。 |
| ToDoubleFunction<T> | 代表一个返回双精度类型结果的函数。 |
| ToIntBiFunction<T,U> | 表示一个接受两个参数并返回整数的函数。 |
| ToIntFunction<T> | 代表一个返回整数的函数。 |
| ToLongBiFunction<T,U> | 表示一个接受两个参数并返回long类型结果的函数。 |
| ToLongFunction<T> | 表示一个返回long类型结果的函数。 |
| UnaryOperator<T> | 表示对单个操作数的操作,该操作返回与操作数相同类型的结果。 |
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
本文链接:https://www.jhelp.net/p/Wi2x6YUqtRvLXizC (转载请保留)。
本站推荐
-
1664
-
1644
-
1547
-
1080
-
1064
文章目录
