zoukankan      html  css  js  c++  java
  • Lambda表达式和函数式接口

    试问怎么调用接口中的抽象函数

    方法一:写一个类实现接口中的抽象方法,然后创建这个类的对象调用该类重写后的方法。

    方法二:使用匿名内部类创建匿名内部类的对象。

            // 匿名内部类实现重写接口的抽象方法
            new test03() {
                @Override
                public void name() {
                    // TODO Auto-generated method stub
                }
            };

    匿名内部类的出现简化代码。lamdba表达式的出现有进一步的简化了匿名内部类的代码  

    public class Dome01 {
        public static void main(String[] args) {
            //分别使用匿名内部类和lamdba表达式
            TestInterface testInterface = new TestInterface() {
                @Override
                public void print() {
                    System.out.println("我爱java");
                }
            };
            testInterface.print();
            
            //lamdba 
            TestInterface testInterface2 = () ->{System.out.println("我爱java");};
            testInterface2.print();
        }
    
    }
    
    interface TestInterface { // 定义一个接口
        void print();
    }

    lamdba表达式的标准格式

    Lambda省去面向对象的条条框框,格式由3个部分组成:
    • 一些参数
    • 一个箭头
    • 一段代码
    Lambda表达式的标准格式为:
    (参数类型 参数名称) ‐> { 代码语句 }
    格式说明:
    • 小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。
    • -> 是新引入的语法格式,代表指向动作。
    • 大括号内的语法与传统方法体要求基本一致。

     函数式接口

    函数式接口在Java中是指:有且仅有一个抽象方法的接口。
    函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可
    以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。
    格式:
    只要确保接口中有且仅有一个抽象方法即可:
    修饰符 interface 接口名称 {
         public abstract 返回值类型 方法名称(可选参数信息); // 其他非抽象方法内容
    }
    由于接口当中抽象方法的 public abstract 是可以省略的,所以定义一个函数式接口很简单:
    public interface MyFunctionalInterface { void myMethod(); }
    FunctionalInterface注解:
    与 @Override 注解的作用类似,Java 8中专门为函数式接口引入了一个新的注解: @FunctionalInterface 。该注 解可用于一个接口的定义上:
    @FunctionalInterface
    public interface MyFunctionalInterface {
          void myMethod();
      }
    一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错。不过,即使不使用该注解,只要满足函数式接口的定义,这仍然是一个函数式接口,使用起来都一样。
    个人学习,内容简略
  • 相关阅读:
    PHP Smarty模板的安装
    百度地图API使用方法详解
    总结的一些微信API接口
    WePayUI 快快尝鲜体验
    Python发送邮件
    Python网络编程
    python 内置函数
    Python操作数据库
    Python操作excel
    python之函数
  • 原文地址:https://www.cnblogs.com/2979100039-qq-con/p/13471774.html
Copyright © 2011-2022 走看看