博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jdk1.8的lambda语法(转)
阅读量:6383 次
发布时间:2019-06-23

本文共 2366 字,大约阅读时间需要 7 分钟。

原文链接:http://www.jb51.net/article/115081.htm

代码:

package com.jdk_8;import org.junit.Test;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;/** * Created by zhen on 2017-07-04. */public class LambdaTest {    /**     * 函数式接口(function interface也叫功能性接口,其实是同一个东西)。简单来说,函数式接口只是包含一个方法的接口。比如java标准库中的     * java.lang.Runnable和java.util.Comparator都是典型的函数式接口。java 8 提供@FunctionInterface注解是必须的,只要接口复合函数式接口     * 的标准(即只包含一个抽象方法的接口),虚拟机会自动判断,但最好在接口上使用@FunctionInterface进行声明,以便其他人在接口中添加方法     * 。java的lambda无法单独出现,它需要一个函数式接口来盛放,lambda表达式方法体其实就是函数接口的实现。     *     * Lambda语法:     *  包含三个部分     *  1、一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数     *  2、一个箭头符号:->     *  3、方法体,可以是表达式和代码块,方法体函数接口里面方法的实现,如果是代码块,必须用{}来包裹起来,而且需要一个return返回值,但是     *  有个例外,若函数式接口里面的方法返回值是void,则无需{}     */    public void test1(){        runThreadUseInnerClass();        runThreadUseLambda();    }    public void runThreadUseLambda(){        new Thread(() -> System.out.println("lambda实现的线程")).start();    }    public void runThreadUseInnerClass(){        new Thread(new Runnable() {            @Override            public void run() {                System.out.println("内部类实现的线程");            }        }).start();    }    /**     * 方法引用     *  其实是lambda表达式的一个简化写法,所引用的方法起始是lambda表达式的方法实现,语法也很简单,左边是容器(可以是类名、实例名),中间     *  是“::”,右边是相应的方法名。     *  1、如果是静态方法,则是ClassName::methodName     *  2、如果是实例方法,则是Instance::methodName     *  3、构造函数,则是ClassName::new     */    @Test    public void testMethodReference(){        JFrame frame = new JFrame();        frame.setLayout(new FlowLayout());        frame.setVisible(true);        JButton button1 = new JButton("点我");        JButton button2 = new JButton("也点我");        frame.getContentPane().add(button1);        frame.getContentPane().add(button2);        //这里addActionListener方法的参数是ActionListener,是一个函数式接口        button1.addActionListener((e) -> {System.out.println("这里是Lambda的实现方式");});        button2.addActionListener(LambdaTest::doSomething);        /**         * 这里生成的窗体不能持久,可能少了点代码,忽略         * 可以看出,doSomething方法就是lambda表达式的实现,这样的好处就是,如果你觉得lambda的方法体会很长,影响代码可读性,方法引用就是个解决办法         */    }    public static void doSomething(ActionEvent e){        System.out.println("这里是方法引用的实现方式");    }    /**     * 以上就是lambda表达式语法的全部内容了。只是diamante简介这个好处的话,并不能打动很多观众,java 8 也不会那么令人期待,java 8 迫切引     * 入lambda是因为lambda表达式能简化集合上数据的多线程或者多核的处理,提供更快的集合处理速度     */}

 

转载地址:http://czzha.baihongyu.com/

你可能感兴趣的文章
初识Junit
查看>>
eclipse中没有server选项无法配置Tomcat
查看>>
Python--面向对象编程
查看>>
puremvc 笔记
查看>>
[iPad初试]系统介绍及数据交互
查看>>
[Python3网络爬虫开发实战] 4-解析库的使用
查看>>
BCS--设置BDC元数据存储权限--访问被业务数据拒绝
查看>>
骑士 字符串的相关操作与内置函数(集合)
查看>>
SEO 百度后台主动推送链接
查看>>
File 类 操作实例
查看>>
CSS中浮动的使用
查看>>
Bad Habbits
查看>>
转:不应该不知道C++的常用库
查看>>
LeetCode:Pascal's Triangle I II
查看>>
vscode plugins
查看>>
数据结构排序
查看>>
vi技巧: 宏的使用技巧(其中怎样保存宏)那部分比较重要
查看>>
angular2.0学习笔记1.开发环境搭建 (node.js和npm的安装)
查看>>
.bashrc和.bash_profile的区别
查看>>
让你的PHP程序真正的实现多线程(PHP多线程类)(转)
查看>>