栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

函数接口,简写

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

函数接口,简写

函数接口: 一个接口中只有一个抽象方法

判断:可以用@FunctionInterface来判断一个接口是否是函数接口

java内置四大函数式接口

接口名—方法
Supplier—get
Consumer—accept
Predicate—test
Function—apply

名字起的很形象了

lambda

语法

  • 1.只有一条语句,省略大括号,如果语句是return,省略return.
  • 2.如果只有一个参数,省略小括号.
  • 一般形式 (参数列表)->(方法体)
   @Test
    void Test1(){
//         未使用lambda
       Comparable a = new Comparable<>() {
           @Override
           public int compareTo(Integer o) {
               return 0;
           }
       };
    }
    @Test
    void Test2() {
//         一般lambda
        Comparable b = (o) -> {
            return 0;
        };
    }
    @Test
    void Test3(){
//         只有一条语句,省略大括号,如果语句是return,省略return. 使用lambda
        Comparable c = (o)->0;

    }
方法引用

本质上是lambda

  • 写法
  • 类::静态方法
  • 实例::非静态方法
  • 类::非静态方法
  • 条件
  • a.当函数接口中那个抽象方法A只有一条语句
  • b. 那条语句调用了方法B
  • c.
    • 适用于 类::静态方法/实例::非静态方法A与B的参数列表和返回值相同
    • 适用于 类::非静态方法 A的参数列表中第一个参数是实例且可以调用B方法,后面的参数与B方法的参数列表对应。返回值相同
//    方法引用  类::静态 有返回值
  @Test
    void Test4(){
//     不使用方法引用
         Function func1 = new Function<>() {
            @Override
            public String apply(Integer integer) {
                return String.valueOf(integer);
            }
        };
//     使用方法引用   
        Function func2 = String::valueOf;
    }
//    方法引用 类::非静态, 无返回值
    @Test
    void Test5(){
//    不使用方法引用
        Consumer con1 = new Consumer() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
//      使用方法引用
        Consumer con2 = System.out::println;
    }
构造器引用和数组引用 写法 ClassName::new 条件
  • 只有一条语句,且为return
  • 有抽象方法和对应的构造器形参列表相同
//    构造器引用
    @Test
    void Test6(){
//        未使用构造引用
         Supplier sup1 = new Supplier<>() {
             @Override
             public Object get() {
                 return new Object();
             }
         };
//         使用构造引用
        Supplier sup2 = Object::new;
    }
    @Test
    void Test7(){
//        不使用数组引用
        Function func1 = new Function<>(){

            @Override
            public String[] apply(Integer integer) {
                return new String[integer];
            }
        };
//        使用数组引用
        Function func2 = String[]::new;

    }
    static char toLowerCase(char ch){
         return (char)(ch-32);
    }
}


转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号