lambda表达式 简化过程推理


//1. 定义一个函数式接口
interface ILike{
    void lambda(int a,int b);
}

//2。实现函数式接口
class Like implements ILike{
    @Override
    public void lambda(int a,int b) {
        System.out.println("I like Lambda");
    }
}

public class TestLambda {

    //3。 为了简化,将外部类移到内部,成为静态内部类
    static class Like3 implements ILike{
        @Override
        public void lambda(int a,int b) {
            System.out.println("I like Lambda3");
        }
    }

    public static void main(String[] args) {
        ILike like = new Like();
        like.lambda(1,2);

        like = new Like3();
        like.lambda(1,3);

        //4。 为了简化,将静态内部类移到方法内部,成为局部内部类
        class Like4 implements ILike{
            @Override
            public void lambda(int a,int b) {
                System.out.println("I like Lambda4");
            }
        }

        like = new Like4();
        like.lambda(1,4);

        //5。 匿名内部类,没有类名,必须借助接口或父类
        like = new ILike() {
            @Override
            public void lambda(int a,int b) {
                System.out.println("I like Lambda5");
            }
        };
        like.lambda(1,5);

        //6。 JDK8后,lambda表达式再简化;因为函数式接口中接口和方法都只有一个,一一对应;
        // 所以就去掉接口名字、函数名字,将函数参数列表后面 用 -> 指向函数体 即可
        like = (a,b)->{
                System.out.println("I like Lambda6");//相当于是重写接口中lambda()方法的函数体
        };
        like.lambda(1,2);//所以调用lambda()才会打印lambda6

        //7。 再简化;
        // 规则:
        // 1。参数列表可以省略参数类型;多个参数时都一起省略,加()包裹
        // 2. 函数题有多行语句时,打括号不能省;一条语句时可以省略
        // 3。 接口必须是函数式接口
        like = (a,b)->{
            System.out.println("I like Lambda7 : " + a + b);//相当于是重写接口中lambda()方法的函数体
        };
        like.lambda(1,7);
    }
}

推荐这些技术文章:

多线程基础lambda(二)

package com.kaiyuan.lesson02;

/*
推导式lambal表达式
*/

public class TestLambal1 {
// 3 静态内部类
static class Like2 implements ILike{

@Override
public void lambal() {
S...

多线程(二)静态代理、Lamda表达式

多线程(二)静态代理、Lamda表达式
目录多线程(二)静态代理、Lamda表达式静态代理模式概念好处代码实例Lamda表达式(λ表达式)Lamda表达式优点函数式接口定义Lamda表达式的推导推导1(普通式子)推导2(类--》静态内部类--》局部内部类--》匿名内部类)推导3(上面式子--》Lambda表达式)Lamda的表达表达1表达2(去掉小括号)表达式3(去掉花括号)表达式4(多个参数,...

Java多线程02:静态代理模式和Lambda表达式

Java多线程02:静态代理模式和Lambda表达式
静态代理模式

真实对象和代理对象都要实现同一个接口
代理对象要代理真实角色
好处:

代理对象可以做很多真实对象做不了的东西
真实对象专注做自己的事情

线程底部的实现原理

以婚庆公司代码作为实例:
package com.lurenj.thread;

public class StaticProxy {
public sta...

这个程序输出为何不对?

问题
public class EchoPlayer {
static int M = 5; static int N = 4; static int[][] b = new int[5][N]; static int k=0; public static void main(String[] args){ C(5,4,4); System.out.println()...

Lambda表达式简记

Lambda表达式
public class TestLambda1 {
//3 静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("lambda 2");
}
...

Java8,Lambda表达式

Lambda表达式
λ是希腊字母表中第11位字母
实质属于函数式编程
作用:

避免匿名内部类定义过多
使代码看起来更加简介
删去无意义代码,留下核心逻辑

函数式接口Functional Interface
函数是接口是Lambda表达式的基础
函数式接口的定义:

只包含唯一一个抽象方法的接口

public interface Runnable{
public abstract v...

【Java】双引号""和单引号''导致不同的结果

1 + 2 + "3" 与 1 + 2 + '3' 结果不同

代码如下:

public class Test{
public static void main(String[] args){
System.out.println(1 + 2 + "3");
System.out.println(1 + 2 + '3');
}
}

执行结果...

继承的类的静态成员变量是自身的时候为啥不爆StackOverflowError

问题
有两个方面的问题:
1,当一个类B继承一个类C,而类B的一个实例又是类C的一个静态成员变量的时候,为什么不会报StackOverflowError,我知道类B的一个实例是类C的一个非静态成员变量的时候会报这个错误。虽然静态的只有一个实例,但引用还是是无限循环的啊?
 
2.当一个类B继承一个类C、一个接口A,类C中和接口A中都有一个相同的成员变量b的时候,分...

接口适配器模式

package com.life.design.adaper.interfaceadapter;

public interface Interface4 {
public void m1();
public void m2();
public void m3();
public void m4();
}

package com.life.design.ad...

Lambda表达式简化过程

Lambda表达式
new Thread ( ()->System.out.println("多线程学习。。。")) .start();

函数式接口:接口(interface)中只有一个方法要实现!
 //接口 interface ILike{     void lambda(); }

 
1、定义实现类实现方法
...

文章标题:lambda表达式 简化过程推理
文章链接:https://www.dianjilingqu.com/51041.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>