Java8函数式编程

本文详细探讨了Java8引入的函数式编程特性,包括Lambda表达式、函数式接口、Stream API的使用,以及如何通过这些特性实现并行处理和提高代码的简洁性。通过实例解析,展示了函数式编程如何改变Java开发的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package example;

import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventListener;
import java.util.function.BinaryOperator;

import javax.swing.JButton;
import javax.swing.JFrame;

public class LambdaExpressions {
    public void first_lambda_1(JFrame jFrame)
    {
        System.out.println("Hello");
        JButton jButton = new JButton();
//      jButton.addActionListener(new ActionListener() {
//          
//          @Override
//          public void actionPerformed(ActionEvent e) {
//              // TODO Auto-generated method stub
//              System.out.println("Button click!");
//          }
//      });
        //使用的Lambada表达式
//      jButton.addActionListener(event -> System.out.println("Button Click!"));
        //变体1
        ActionListener oneArgument = event -> System.out.println("Button Click!");
        jButton.addActionListener(oneArgument);

        jFrame.add(jButton);
    }

    public void allLambdaForms()
    {
        Runnable noArguments = ()->System.out.println("Hello,Word!");
        /*
         * 
         * 等同于以下代码
         * **/
        Runnable noRunnable1 = new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                System.out.println("Hello,Word!");
            }
        };

        //==============================================
        ActionListener oneArgument = event -> System.out.println("Button Click!");

        //变体2
        Runnable multiSatement = ()->{
            System.out.print("Hello   ");
            System.out.println("Word!");
        };

        BinaryOperator<Long> add = (x,y)->x+y;


        BinaryOperator<Long> add2 = (Long x,Long y)->x+y;



        BinaryOperator<Long> add1 = new BinaryOperator<Long>() {

            @Override
            public Long apply(Long t, Long u) {
                // TODO Auto-generated method stub
                return t+u;
            }

        };

        add.apply((long)11, (long)12);




//      noArguments.run();
        multiSatement.run();
    }


    public void first_lambda_5(JFrame jFrame)
    {
        JButton jButton = new JButton();

//      final String name = getUsername();
        String name = getUsername(); //这个name必须被赋值一次  final变量 
//      name = "Lisi";//如果对name 进行二次赋值就会发生报错
//      jButton.addActionListener(new ActionListener() {
//          
//          @Override
//          public void actionPerformed(ActionEvent event) {
//              // TODO Auto-generated method stub
//              System.out.println("Hi  " + name);
//          }
//      });

        jButton.addActionListener((ActionEvent event) -> System.out.println("Hi  " + name));
        jFrame.add(jButton);

    }

    private String getUsername() {
        // TODO Auto-generated method stub
        return "Zhangsan";
    }



    public static void main(String[] args) {
//      new LambdaExpressions().first_lambda_1();
        JFrame jFrame = new JFrame();
        jFrame.setVisible(true);
        jFrame.setSize(200, 200);

//      new LambdaExpressions().first_lambda_1(jFrame);
        LambdaExpressions lambdaExpressions = new LambdaExpressions();
//      lambdaExpressions.allLambdaForms();
//      lambdaExpressions.first_lambda_1(jFrame);
        lambdaExpressions.first_lambda_5(jFrame);
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值