广州市白云区建设局 网站,中铁快运关于网站建设,线上运营的5个步骤,做网站可以用别人的源码吗1.什么是函数式接口?
只包含一个抽象方法的接口#xff0c;称为函数式接口你可以通过Lambda表达式来创建该接口的对象。#xff08;若Lambda表达式抛出一个受检异常#xff0c;那么该异常需要在目标接口的抽象方法上进行声明#xff09;我们可以在任意函数式接口上使用Fu… 1.什么是函数式接口?
只包含一个抽象方法的接口称为函数式接口你可以通过Lambda表达式来创建该接口的对象。若Lambda表达式抛出一个受检异常那么该异常需要在目标接口的抽象方法上进行声明我们可以在任意函数式接口上使用FunctionalInterface注解这样做可以检查它是否是一个函数式接口同时javadoc也会包含一条声明说明这个接口是一个函数式接口
2.四大函数式接口的使用
函数接口如果使用的好能让我们的代码变得较为简洁且减少重复代码。
2.1. ConsumerT 消费型接口有入参无返回值
源码:
FunctionalInterface
public interface ConsumerT {/*** Performs this operation on the given argument.** param t the input argument*/void accept(T t);
}
例子 设置属性name和nameDesc的值: public static void main(String[] args) {ListUserInfo userInfoList getUserList();userInfoList.forEach(obj - {functionTest(obj::setName);functionTest(obj::setNameDesc);System.out.println(obj);});}public static void functionTest(ConsumerString consumer){consumer.accept(name);}
2.2 FunctionT, R 函数型接口 有入参 有返回值
源码: FunctionalInterface
public interface FunctionT, R {/*** Applies this function to the given argument.** param t the function argument* return the function result*/R apply(T t);}
例子 获取属性nameDesc的值: public static void main(String[] args) {ListUserInfo userInfoList getUserList();userInfoList.forEach(obj - {functionTest(obj, UserInfo::getNameDesc);});}public static void functionTest(UserInfo userInfo, FunctionUserInfo, String function){String apply function.apply(userInfo);System.out.println(apply);
}
2.3 SupplierT 提供型接口 空参但是有返回值
源码: FunctionalInterface
public interface SupplierT {/*** Gets a result.** return a result*/T get();
}
例子 获取属性nameDesc的值: public static void main(String[] args) {ListUserInfo userInfoList getUserList();userInfoList.forEach(obj - {functionTest(obj::getNameDesc);});}public static void functionTest(SupplierString supplier){String s supplier.get();}
2.4 PredicatT 断言型接口 返回真假
源码: FunctionalInterface
public interface PredicateT {/*** Evaluates this predicate on the given argument.** param t the input argument* return {code true} if the input argument matches the predicate,* otherwise {code false}*/boolean test(T t);
}例子 计算一个数字是否大于100: public static void main(String[] args) {functionTest(50, x - x 100);}public static void functionTest(int x, PredicateInteger predicate){boolean test predicate.test(x);System.out.println(test);}
3.其他函数式接口
序号接口描述1BiConsumerT,U代表了一个接受两个输入参数的操作并且不返回任何结果2BiFunctionT,U,R代表了一个接受两个输入参数的方法并且返回一个结果3BinaryOperatorT 代表了一个作用于于两个同类型操作符的操作并且返回了 操作符同类型的结果 4BiPredicateT,U代表了一个两个参数的boolean值方法5BooleanSupplier代表了boolean值结果的提供方6ConsumerT代表了接受一个输入参数并且无返回的操作7DoubleBinaryOperator 代表了作用于两个double值操作符的操作并且返回了 一个double值的结果 8DoubleConsumer代表一个接受double值参数的操作并且不返回结果。9DoubleFunctionR代表接受一个double值参数的方法并且返回结果10DoublePredicate代表一个拥有double值参数的boolean值方法11DoubleSupplier代表一个double值结构的提供方12DoubleToIntFunction接受一个double类型输入返回一个int类型结果13DoubleToLongFunction接受一个double类型输入返回一个long类型结果14DoubleUnaryOperator接受一个参数同为类型double,返回值类型也为double15FunctionT,R接受一个输入参数返回一个结果。16IntBinaryOperator接受两个参数同为类型int,返回值类型也为int 17IntConsumer接受一个int类型的输入参数无返回值 18IntFunctionR接受一个int类型输入参数返回一个结果 。19IntPredicate接受一个int输入参数返回一个布尔值的结果20IntSupplier无参数返回一个int类型结果21IntToDoubleFunction接受一个int类型输入返回一个double类型结果 22IntToLongFunction接受一个int类型输入返回一个long类型结果23IntUnaryOperator接受一个参数同为类型int,返回值类型也为int 24LongBinaryOperator接受两个参数同为类型long,返回值类型也为long25LongConsumer接受一个long类型的输入参数无返回值26LongFunctionR接受一个long类型输入参数返回一个结果27LongPredicateR接受一个long输入参数返回一个布尔值类型结果28LongSupplier无参数返回一个结果long类型的值29LongToDoubleFunction接受一个long类型输入返回一个double类型结果30LongToIntFunction接受一个long类型输入返回一个int类型结果31LongUnaryOperator接受一个参数同为类型long,返回值类型也为long32ObjDoubleConsumerT接受一个object类型和一个double类型的输入参数无返回值33ObjIntConsumerT接受一个object类型和一个int类型的输入参数无返回值34ObjLongConsumerT接受一个object类型和一个long类型的输入参数无返回值35PredicateT接受一个输入参数返回一个布尔值结果36SupplierT无参数返回一个结果37ToDoubleBiFunctionT,U接受两个输入参数返回一个double类型结果38ToDoubleFunctionT接受一个输入参数返回一个double类型结果39ToIntBiFunctionT,U接受两个输入参数返回一个int类型结果40ToIntFunctionT接受一个输入参数返回一个int类型结果41ToLongBiFunctionT,U接受两个输入参数返回一个long类型结果42ToLongFunctionT接受一个输入参数返回一个long类型结果43UnaryOperatorT接受一个参数为类型T,返回值类型也为T