java中的lambda表达式

2019-05-28  本文已影响0人  东方未白_

lambda表达式的定义

Lambda:
In programming languages such as Lisp, Python and Ruby lambda is an operator used to denote anonymous
functions or closures, following the usage of lambda calculus

在编程语言Lisp, Python 和Ruby中,lambda是一种操作符,用于指定匿名函数或者闭包,遵循 λ-calculus

在Python、JavaScript等函数式编程语言之中,Lambda表达式的类型就是函数。而在Java中,Lambda表达式的类型是对象,必须依附于函数式接口(Functional Interface)。

java中的lambda表达式是一种匿名函数;没有名字、方法返回值类型以及访问修饰符;

为何需要lambda表达式


基本语法
()-> { }

基本使用示例

  1. 监听Jbutton的点击事件
public class JavaSwing {
    public static void main(String[] args) {
        JFrame jframe = new JFrame("A Frame");
        JButton jButton = new JButton("A Button");
//匿名函数写法
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Pressed");
            }
        });

// λ写法
        jButton.addActionListener( e -> System.out.println("Pressed"));

        jframe.add(jButton);
        jframe.pack();
        jframe.setVisible(true);
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

其中 e -> System.out.println("Pressed")
e代表event,JVM的类型推断认为此处事件一定是一个ActionEvent类型,故可以省略声明 ActionEvent e,从而直接使用变量 e
list.forEach( i -> System.out.println(i));中的 i 也用到了类型推断。


2.遍历一个List

List<Integer> list = Arrays.asList(0,1, 2, 3, 4, 5, 6, 7, 8,9);
//list.forEach(Integer i -> System.out.println(i));
list.forEach(i -> System.out.println(i));//JVM根据上文List<Integer>推断出此处 i 的类型为Integer

3.创建一个线程

            new Thread(() -> System.out.println("hello")).start();

上一篇下一篇

猜你喜欢

热点阅读