自动化零件服务商 - 供应SMC,FESTO,CKD全新正品气动元件
自动化零件服务商 - 供应SMC,FESTO,CKD全新正品气动元件
自动化零件服务商 - 供应SMC,FESTO,CKD全新正品气动元件

前言

今天有空整理一下Consumer<T> 接口的使用,一般用于回调中。

这里简单记录一下。

正文

Consumer<T>接口是java 1.8才有的,定义如下:

  1. //java.util.function.Consumer
  2. @FunctionalInterface
  3. public interface Consumer<T> {
  4. void accept(T t);
  5. default Consumer<T> andThen(Consumer<? super T> after) {
  6. Objects.requireNonNull(after);
  7. return (T t) -> { accept(t); after.accept(t); };
  8. }
  9. }
复制

Consumer是消费的意思。

Consumer<T>可以消费一个T类型(泛型)的数据,有accept和andThen两个方法。

accept 的使用

  1. void accept(T t)
复制

意为消费一个指定泛型的数据

demo片段

定义consumerLog方法

  1. private void consumerLog(String name, Consumer<String> consumer ){
  2. consumer.accept(name);
  3. }
复制

使用consumerLog方法

  1. consumerLog("Hello", new Consumer<String>() {
  2. @Override
  3. public void accept(String s) {
  4. Log.d(TAG, "accept 11 s : "+ s);
  5. }
  6. });
复制

andThen 的使用

  1. default Consumer<T> andThen(Consumer<? super T> after) {
  2. Objects.requireNonNull(after);
  3. return (T t) -> { accept(t); after.accept(t); };
  4. }
复制

如果一个方法的参数和返回值全都是Consumer类型,那么就可以实现效果:

消费数据的时候,首先做一个操作,然后再做一个操作,实现组合,而这个方法就是Consumer接口中的default方法andThen

demo片段

定义consumerLog2方法

  1. private void consumerLog2(String name, Consumer<String> consumer1,Consumer<String> consumer2 ){
  2. consumer2.andThen(consumer1).accept(name);
  3. }
复制

使用consumerLog2

  1. consumerLog2("World", new Consumer<String>() {
  2. @Override
  3. public void accept(String s) {
  4. Log.d(TAG, "accept 22 s : "+ s);
  5. }
  6. }, new Consumer<String>() {
  7. @Override
  8. public void accept(String s) {
  9. Log.d(TAG, "accept 33 s : "+ s);
  10. }
  11. });
复制

参考文章

  1. 【java笔记】常用接口(2):Consumer接口
  2. Consumer接口
  3. Consumer接口
自动化零件服务商 - 供应SMC,FESTO,CKD全新正品气动元件

相关文章

自动化零件服务商 - 供应SMC,FESTO,CKD全新正品气动元件

暂无评论

none
暂无评论...