jdk1.8: Consumer函数

复制代码
场景:       
当我们在a方法中,需要把某些参数赋值给一个Integer类型的对象,而该对象只有在b方法才能赋值,那么我们可以在a方法中使用consumer记录我们要执行的操作,再把consumer作为参数传递到b方法执行
//Consumer<>方法 User user = new User("aa", "bb"); Consumer<User> function = uu -> uu.setName("uu"); //预定义的一个函数过程 function.accept(user); //用入参去执行预定义的函数过程 System.out.println(user); //Consumer<>方法 Consumer<Integer> consumer = num -> { num++; System.out.println("num="+num);//4 }; consumer.accept(3); // 2.andThen(Consumer<? super T> after)方法 // A.andThen(B).accept() 先执行consumer1表达式,再执行consumer2表达式。 Consumer<Integer> consumer1 = num -> { num++; System.out.println("consumer1="+num);//4 }; Consumer<Integer> consumer2 = i -> { System.out.println("consumer2="+i); }; consumer1.andThen(consumer2).accept(3);
复制代码

 2. 发布方法方法调用:

复制代码
@Test
    public void consumerTest() {
        User user = User.builder().build();
        UserPageDto userPageDto = new UserPageDto();
        userPageDto.setUserName("张三");
        userPageDto.setRole(2);
        cosumerMethod(user, userPageDto, (x, y) -> BeanUtils.copyProperties(x, y)); //函数过程
        cosumerMethod1(user, (x) -> System.out.println(x)); //函数过程
        cosumerMethod1(user, System.out::println);   //函数过程
      cosumerMethod1(user, (x)->{
      x.setName("yy");
      x.setPrice(new BigDecimal(33));
      x.setQty(33);
       });
      System.out.println(user.toString());
} 

private void cosumerMethod1(User user, Consumer<User> x){
  x.accept(user); //调用参数
}

private void cosumerMethod(User user, UserPageDto userPageDto, BiConsumer<UserPageDto,User> bc) {
bc.accept(userPageDto, user);
}
复制代码
复制代码
@Data
public class UserPageDto {
    private String userName;
    private Integer role;
}

复制代码
        // java8: Supplier
        //以前创建对象每次都要new,但是Supplier相当于一个对象容器,只需要创建一次,下次需要用get方法从容器获取
        Supplier<User> userSupplier = User::new;
        User user = userSupplier.get();
        user.setName("aa");
        User user2 = userSupplier.get();
        user2.setSerbian("bb");
        System.out.println(user);
        System.out.println(user2);
复制代码
复制代码
posted @   威兰达  阅读(342)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示