函数式接口

1.函数式接口

1.1概述

如果说一个接口内有且只有一个方法,并且该方法是一个缺省属性为public abstract方法,该接口可以称之为是一个函数式接口

自定义函数接口,还有系统中提供的函数式接口

Compartor Runnable

可以直接理解JDK1.8的新特征,Lambda表达式来使用

 

Lambda表达式对比匿名匿名内部类使用

    1.简化了代码结构

     2.节约了内存资源

      3.让程序员更加关注,我要做什么

1.2 @FunctionalInterface 使用

类似于

         @Overried

          开启代码重写格式严格检查

/**
 * 使用@FunctionalInterface检查函数式接口格式问题
 * 要求当前接口中有且只有一个缺省属性为public abstract的方法
 *
 * @author Anonymous 2020/3/11 9:55
 */
@FunctionalInterface
public interface FunctionalType {
    void test();
}

 

1.3 使用自定义的函数式接口作为方法的参数使用

/**
 * 自定义函数式接口作为方法的参数演示
 *
 * @author Anonymous 2020/3/11 9:55
 */
public class Demo1 {
    public static void main(String[] args) {
        /*
        使用匿名内部类来完成函数式接口的使用,但是这种方式有悖于函数式接口的目的
        Low

        useFunctionalInterface(new FunctionalType() {
            @Override
            public void test() {
                System.out.println("匿名内部类的匿名对象直接作为方法的参数。");
            }
        });
        int(*) (char **, int *)
            C语言中的函数指针
            如果是C语言中,这需要的参数是方法名
        */
       useFunctionalInterface(() -> System.out.println("函数式接口 lambda表达式实现完成方法,实现目的"));
    }

    /**
     * 使用一个函数式接口作为方法的参数
     *
     * @param ft 函数式接口的实现类对象,或者说直接操作本质,直接传入Lambda表达式
     */
    public static void useFunctionalInterface(FunctionalType ft) {
        ft.test();
    }
}

 

代码中使用函数式接口

      1.让程序的目的性更强

      2.提供复用,普遍性的价值

      3.节约资源

 

 

你可能感兴趣的:(java学习)