zoukankan      html  css  js  c++  java
  • 预定义的函数式接口 Consumer

    函数接口: Consumer<T, R> 

    方法定义: void accept(T t);

    说明: 消费者,输入类型T

    接口源码

    @FunctionalInterface
    public interface Consumer<T> {
    
        /**
         * 抽象方法:传入一个指定泛型的参数,无返回值
         */
        void accept(T t);
    
        /**
         * 如同方法名字一样andThen,类似一种相加的功能(下面会举例说明)
         */
        default Consumer<T> andThen(Consumer<? super T> after) {
            Objects.requireNonNull(after);
            return (T t) -> { accept(t); after.accept(t); };
        }
    }

    Consumer示例

    定义一个学生类Student,它有name和score两个属性,如下所示。

    @Setter
    @Getter
    public class Student {
    
        String name;
    
        double score;
    
        public Student(String name, double score) {
            this.name = name;
            this.score = score;
        }
    }

    直接修改原对象,通过代码传递,这时,可以用Consumer写一个通用的方法,比如:

    public static <E> void foreach(List<E> list, Consumer<E> consumer) {
        for (E e : list) {
            consumer.accept(e);
        }
    }
    public static void main(String[] args) {
        List<Student> students = Arrays.asList(new Student[]{
                new Student("zhangsan", 80d),
                new Student("lisi", 89d),
                new Student("wangwu", 98d)});
    
        foreach(students, t -> t.setName(t.getName().toUpperCase()));
        System.out.println("students:" + students.toString());
    
    }
  • 相关阅读:
    实现自动进行金额汇总
    实现模糊查询
    手电筒查询
    lov的建立
    日历 的建立
    快速创建Folder
    TAB页制作
    堆叠画布
    弹性域的开发
    注销记录的实现
  • 原文地址:https://www.cnblogs.com/ooo0/p/13691195.html
Copyright © 2011-2022 走看看