7.四大函数式接口(必须掌握)

函数式接口:只有一个方法的接口
例如Runnable
    @FunctionalInterface
    public interface Runnable {
        void run();
    }
简化编程模型,在新版本的框架底层大量使用 
四大函数式接口:
    1.Function接口:泛型设置方法参数类型和返回值类型
        public class FunctionDemo {
            //重点1:函数式接口Function
            static Function function=new Function() {
                @Override
                public Object apply(Object o) {
                    System.out.println("输入类型:"+o.getClass().getName());
                    return o;
                }
            };
            //自己改造的,加入lambda表达式
            //重点2:函数式接口使用lambda表达式
            static Function<String,String> function2=(String str)->{
                System.out.println("输入参数是:"+str);
                return str;
            };
        
            public static void main(String[] args) {
                function.apply(123);
                function2.apply("123");
            }
        }
        
        重点3:当设置了泛型时,lambda的参数可以不设置类型
            static Function<String,String> function3=(str)->{
                System.out.println("输入参数是:"+str);
                return str;
            };

2.Predicate:断言型接口,返回boolean值
    public class PredicateDemo {
        static Predicate predicate=new Predicate() {
            @Override
            public boolean test(Object o) {
                return false;
            }
        };
        static Predicate<String> predicate1=(str)->{
            if(str.isEmpty()){
                return false;
            }else {
                return true;
            }
        } ;
    
        public static void main(String[] args) {
            predicate1.test("abc");
        }
    }

3.Consumer:消费者函数接口:accept(Object)函数,传入参数,不返回任何
    public class ConsumerDemo {
        static Consumer consumer=new Consumer() {
            @Override
            public void accept(Object o) {
                System.out.println("消费者函数式端口,传入参数,返回void");
            }
        };
        static Consumer<String> consumer1=(str)->{
            System.out.println("入参:"+str+" 不返回!");
        };
    
        public static void main(String[] args) {
            consumer.accept("abc");;
            consumer1.accept("abv");
        }
    }

4.Supplier:提供者函数接口,无传参,有返回值!
    public class SupplierDemo {
        static Supplier supplier=new Supplier() {
            @Override
            public Object get() {
                System.out.println("不传参,返回内容");
                return "返回";
            }
        };
        static Supplier<String> supplier1 = ()->{
            System.out.println("不传参数!");
            return "返回";
        };
    
        public static void main(String[] args) {
            supplier.get();
            supplier1.get();
        }
    }

 

posted @ 2022-05-13 21:12  努力的达子  阅读(222)  评论(0编辑  收藏  举报