当前位置: 首页 > article >正文

Java 8 - Lambda 表达式

1. 函数式接口

        当一个接口中只有一个非 default 修饰的方法,这个接口就是一个函数式接口用

@FunctionalInterface 标注

1)只有一个抽象方法

@FunctionalInterface
public interface MyInterface {
    void print(int x);
}

2)只有一个抽象方法和一个 default 方法

@FunctionalInterface
public interface MyInterface {

    void print(int x);

    // 1.8 之后接口可以有默认实现方法
    default String getValue(){
        return "value";
    }
}

3)只有一个抽象方法和多个 default 方法

@FunctionalInterface
public interface MyInterface {
    void print(int x);
    // 1.8 之后接口可以有默认实现方法
    default String getValue(){
        return "value";
    }
    default int getAge(int age){
        return age;
    }
}

2. 使用 lambda 表达式返回函数式接口对象

        当使用函数式接口中的的唯一非 default 方法时,传统的做法是先写一个接口的实现类,给出接口中抽象方法的具体实现,然后 new 一个该类的实例化对象,在调用重写后的方法,步骤比较繁琐,lambda 可以快速实现该方法的实现和调用

创建一个接口

@FunctionalInterface
public interface MyInterface {

    void print(int x);

    // 1.8 之后接口可以有默认实现方法
    default String getValue(){
        return "value";
    }
}

使用 lambda 表达式返回一个该接口对象,并给出该方法的具体实现

public class MyClass {

    public static void main(String[] args) {

        MyInterface myinterface = x -> System.out.println("x ="+ x);

        myinterface.print(12344);
    }
}

lambda 表达式语法

语法格式: () -> {};

# () 中代表的是接口中抽象方法的参数值
# {} 中代表该方法的具体实现
# () -> {}; 的返回值是接口的一个实例化对象

3. Runnable 接口

        Runnable 接口是用来创建线程的一个接口,是一个典型的函数式接口

  源码如下:

 

   通过 Lambda 表达式创建线程

public class Test1{
    public static void main(String[] args) {
        
        Runnable runnable = () -> System.out.println("this a thread");
      
        runnable.run();
    }
}

4. Callable 接口

  Callable 接口是用来创建线程的一个接口,是一个典型的函数式接口

  源码如下:

  通过 Lambda 表达式创建线程

public class MyCallable {
    public static void main(String[] args) throws Exception {

        Callable<Integer> callable = () -> {
            System.out.println("this a thread");
            return  1;
        };
        callable.call();
    }
}


http://www.kler.cn/a/5557.html

相关文章:

  • 后端开发如何高效使用 Apifox?
  • 【开源免费】基于SpringBoot+Vue.JS安康旅游网站(JAVA毕业设计)
  • 支持向量机入门指南:从原理到实践
  • Java爬虫实战:深度解析VIP商品详情获取技术
  • OAuth 2.0
  • 操作系统(26)数据一致性控制
  • 【gitlab部署】centos8安装gitlab(搭建属于自己的代码服务器)
  • 小驰私房菜_09_应用集成Raw域算法流程
  • 我的天哪, 什么是SOA架构
  • 数据库+加密算法参考材料-2023.3.29
  • 【Linux】进程控制(创建、终止、等待)
  • Android FrameWork——SystemServer
  • 提高java反射效率
  • 网络编程socket(下)
  • 非科班应届生培训Java能就业吗?
  • GPT-4老板:AI可能会杀死人类,已经出现我们无法解释的推理能力
  • 正则表达式
  • 如何同时处理多个聊天
  • 第03章 用户与权限管理
  • 用python如何实现智能合约?
  • ​【java】蓝桥杯——小蓝与钥匙_全错排列​
  • 我用Python写的一个操控玩具车的程序
  • 微服务_微服务的架构演进之路
  • STL容器之<multiset>
  • 【计算机视觉 | 目标检测】Object query的理解
  • 【开发实践】在线考试系统(三) Sortable实现试题的重排序