jdk8-Consumer接口
阿新 • • 發佈:2019-01-14
code 源代碼 相關 link mit 方法 oid rim 一個
Consumer的作用是給定義一個參數,對其進行(消費)處理,處理的方式可以是任意操作.
源代碼如下:
Consumer<T> void accept(T t);
default Consumer<T> andThen(Consumer<? super T> after);
andThen方法返回一個Consumer,以便於鏈式操作,值得註意的是,andThen方法是建立在accept基礎之上的。執行的順序是先執行accept,再執行andThen操作。
accept示例:
Consumer<Person> consumer = (p) -> System.out.println(p.getFirstName());//定義消費行為 consumer.accept(Person.builder().firstName("zs").build());//執行消費行為
andThen示例:
Consumer<Person> consumer = (p) -> System.out.println(p.getFirstName()); consumer.andThen((p) -> System.out.println(p.getLastName())).accept(Person.builder().firstName("san feng").lastName("zhang").build());
Consumer有相關的原始類型實現,是Consumer的特例(This is the primitive type specialization of{@link Consumer} for {@code double}.)
相關的實現有三個IntConsumer,LongConsumer,DoubleConsumer.
accept示例:
DoubleConsumer doubleConsumer = (d) -> System.out.println(d);
doubleConsumer.accept(23.2d);
BiConsumer是對兩個參數進行消費.
accept示例:
BiConsumer<String, Person> biConsumer = (str, p) -> System.out.println(str + p.getFirstName()); biConsumer.accept("hello ", Person.builder().firstName("san feng").lastName("zhang").build());
BiConsumer的原始類型實現也有三個,ObjIntConsumer,ObjLongConsumer,ObjDoubleConsumer
accept示例:
ObjIntConsumer<Person> objIntConsumer = (Person ps, int i) -> {
ps.setAge(i);
System.out.println(ps.getFirstName()+":"+ps.getAge());
};
objIntConsumer.accept(Person.builder().firstName("san feng").lastName("zhang").build(), 300);
Consumer相關的函數式接口,只有這8個。按參數個數分為兩種,每種又有三個原始類型的特殊實現,使用原始類型的相關實現,效率會高一點。
jdk8-Consumer接口