zoukankan      html  css  js  c++  java
  • 函数接口

    前言

    最近在项目中发现了同事写的代码,用到了很多Java8的特性,本篇就写关于函数式接口的;

    正文

    函数式接口

    什么是函数式接口

    函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为lambda表达式。Lambda表达式和方法引用(实际上也可认为是Lambda表达式)上。

    函数式接口

    可以将lambda表达式作为参数传入方法,并处理;

    函数接口注解@FunctionalInterface

    该注解主要起一个标记校验作用,在编译时校验该接口是否遵循函数式接口规则;
    Java 不会强制要求你使用@FunctionalInterface注解来标记你的接口是函数式接口, 然而,作为API作者, 你可能倾向使用@FunctionalInterface指明特定的接口为函数式接口, 这只是一个设计上的考虑, 可以让用户很明显的知道一个接口是函数式接口。

    未违反规则:

    
    @FunctionalInterface
    public interface TestFunc {
        void test();
    }
    
    

    违反规则:

    注解规则

    • 可以定义默认方法

    • 允许定义静态方法

    • 允许定义java.lang.Object里面的public方法

    jdk8之前已有的函数式接口

    • java.lang.Runnable
    • java.util.concurrent.Callable
    • java.security.PrivilegedAction
    • java.util.Comparator
    • java.io.FileFilter
    • java.nio.file.PathMatcher
    • java.lang.reflect.InvocationHandler
    • ava.beans.PropertyChangeListener
    • java.awt.event.ActionListener
    • javax.swing.event.ChangeListener

    新定义的函数式接口

    集中在java.util.function包下边;

    • Predicate -- 传入一个参数,返回一个bool结果, 方法为boolean test(T t)
    • Consumer -- 传入一个参数,无返回值,纯消费。 方法为void accept(T t)
    • Function -- 传入一个参数,返回一个结果,方法为R apply(T t)
    • Supplier -- 无参数传入,返回一个结果,方法为T get()

    自定义函数式接口

    1. 自定义函数式接口类:
    
    @FunctionalInterface
    public interface AnnotationFunc {
        /**
         * 注释执行方法回调
         */
        void callBack();
    }
    
    
    1. 使用函数式接口类
    
    public class TestTwo {
        public static void main(String[] args) {
            //赋值函数
            AnnotationFunc annotationFunc=()-> System.out.println("test");
            //调用方法执行
            annotationFunc.callBack();
        }
    }
    
    
    1. 结果
    
    test
    Process finished with exit code 0
    
    

    总结

    这里大概的了解了Java8的函数式编程,可以将函数(lambda表达式)作为参数传递

    参考资料

  • 相关阅读:
    pip包安装问题
    spyder中让生成的图像单独在窗口中显示
    错误的英语提示翻译 以及经常犯的无错误
    程序结构
    运算符
    js jq计算器
    jQuery筛选选择器
    jQuery获取标签信息
    javascript的getTime函数
    animate动画
  • 原文地址:https://www.cnblogs.com/guoyuchuan/p/11342686.html
Copyright © 2011-2022 走看看