1 介绍

对类型为T的对象应用操作,并返回R类型的结果

2 示例

2.1 调用内部类中的实现代码

  1. /**
  2. * apply 调用内部类中的实现代码
  3. * @param value
  4. * @param function
  5. * @return
  6. */
  7. public static Integer convert(String value, Function<String, Integer> function) {
  8. return function.apply(value);
  9. }
  10. @Test
  11. public void functionTest(){
  12. String value = "2021";
  13. Integer result = convert(value, (s) -> Integer.parseInt(s) + 222);
  14. System.out.println(result);
  15. }
  • 结果

    1. 2243

    2.2 内部类方式

    1. @Test
    2. public void functionTest2(){
    3. // 复杂计算,镶嵌串行使用
    4. // Function <T>:input参数 <R>:output参数
    5. Function<Integer, Integer> function1 =x ->x+1;
    6. // compose 源码执行
    7. Integer result2 = function1.apply(function2.apply(2021));
    8. System.out.println(result2);
    9. // (V v) -> apply(before.apply(v))
    10. Function<Integer, Integer> result3 = function1.compose(function2);
    11. System.out.println(result3.apply(2021));
    12. }
  • 结果

    1. 2023
    2. 2023

    2.3 多条件

    1. @Test
    2. public void functionTest3(){
    3. Function<Integer, Integer> function1 =x ->x+1;
    4. Function<Integer, Integer> result3 = function1.compose(function2);
    5. // 多条件,拼接更多的计算
    6. // (T t) -> after.apply(apply(t))
    7. System.out.println(result3.andThen(function1).apply(1000));
    8. // 返回默认参数
    9. System.out.println(Function.identity().apply(10));
    10. }
    1. 1003
    2. 10

    2.4 实例学生对象

    1. /**
    2. * 实例学生对象
    3. * @param student
    4. * @param function
    5. * @return
    6. */
    7. public static List<Student> convertStudent(Student student, Function<Student,
    8. List<Student>> function) {
    9. return function.apply(student);
    10. }
    11. @Test
    12. public void functionTest4(){
    13. // 添加武士
    14. List<Student> students = new ArrayList<>();
    15. students.add(new Student(1, "张三", "男"));
    16. students.add(new Student(2, "李四", "女"));
    17. Student student=new Student(5,"武士","男");
    18. convertStudent(student, s->{
    19. if("武士".equals(s.getName())) {
    20. students.add(s);
    21. }
    22. return students;
    23. });
    24. System.out.println(students);
    25. }
  • 结果

    1. [Student{id=1, name='张三', sex='男'}, Student{id=2, name='李四', sex='女'}, Student{id=5, name='武士', sex='男'}]