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);
}
}
推荐这些技术文章:
package com.kaiyuan.lesson02;
/*
推导式lambal表达式
*/
public class TestLambal1 {
// 3 静态内部类
static class Like2 implements ILike{
@Override
public void lambal() {
S...
多线程(二)静态代理、Lamda表达式
目录多线程(二)静态代理、Lamda表达式静态代理模式概念好处代码实例Lamda表达式(λ表达式)Lamda表达式优点函数式接口定义Lamda表达式的推导推导1(普通式子)推导2(类--》静态内部类--》局部内部类--》匿名内部类)推导3(上面式子--》Lambda表达式)Lamda的表达表达1表达2(去掉小括号)表达式3(去掉花括号)表达式4(多个参数,...
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表达式
public class TestLambda1 {
//3 静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("lambda 2");
}
...
Lambda表达式
λ是希腊字母表中第11位字母
实质属于函数式编程
作用:
避免匿名内部类定义过多
使代码看起来更加简介
删去无意义代码,留下核心逻辑
函数式接口Functional Interface
函数是接口是Lambda表达式的基础
函数式接口的定义:
只包含唯一一个抽象方法的接口
public interface Runnable{
public abstract v...
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表达式
new Thread ( ()->System.out.println("多线程学习。。。")) .start();
函数式接口:接口(interface)中只有一个方法要实现!
//接口 interface ILike{ void lambda(); }
1、定义实现类实现方法
...
文章链接:https://www.dianjilingqu.com/51041.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。