lambda演算
初版
public class TestLambda1 {
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
}
}
interface ILike{
void lambda();
}
class Like implements ILike{
@Override
public void lambda() {
System.out.println("i like lambda");
}
}
进阶版1.0
public class TestLambda1 {
/**
* 静态内部类
*/
static class Like implements ILike{
@Override
public void lambda() {
System.out.println("i like lambda");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
}
}
/**
* 定义一个函数式接口
*/
interface ILike{
void lambda();
}
进阶版2.0
public class TestLambda1 {
public static void main(String[] args) {
/**
* 局部内部类
*/
class Like implements ILike{
@Override
public void lambda() {
System.out.println("i like lambda");
}
}
// 方法调用
ILike like = new Like();
like.lambda();
}
}
/**
* 定义一个函数式接口
*/
interface ILike{
void lambda();
}
进阶3.0
public class TestLambda1 {
public static void main(String[] args) {
/**
* 匿名部类(PS:没有类的名称,必须借助接口或父类)
*/
ILike like = new ILike() {
@Override
public void lambda() {
System.out.println("i like lambda");
}
};
like.lambda();
}
}
/**
* 定义一个函数接口
*/
interface ILike{
void lambda();
}
进阶4.0
public class TestLambda1 {
public static void main(String[] args) {
/**
* lambda表达式
*/
ILike like = ()->{
System.out.println("i like lambda");
};
like.lambda();
}
}
/**
* 定义一个函数式接口
*/
interface ILike{
void lambda();
}
进阶4.0(同理可得出有参的)
public class TestLambda1 {
public static void main(String[] args) {
/**
* lambda表达式
*/
ILike like = (int i)->{
System.out.println("i like lambda" + i);
};
// 调用方法
like.lambda(123);
}
}
/**
* 定义一个函数接口
*/
interface ILike{
void lambda(int i);
}
完善4.1
public class TestLambda1 {
public static void main(String[] args) {
/**
* lambda表达式:简化参数类型
*/
ILike like = (i)->{
System.out.println("i like lambda" + i);
};
// 调用方法
like.lambda(123);
}
}
/**
* 定义一个函数接口
*/
interface ILike{
void lambda(int i);
}
完善4.2
public class TestLambda1 {
public static void main(String[] args) {
/**
* lambda表达式:简化括号
*/
ILike like = i->{
System.out.println("i like lambda" + i);
};
// 调用方法
like.lambda(123);
}
}
/**
* 定义一个函数接口
*/
interface ILike{
void lambda(int i);
}
完善4.3
public class TestLambda1 {
public static void main(String[] args) {
/**
* lambda表达式:简化去掉花括号
*/
ILike like = i->
System.out.println("i like lambda" + i);
// 调用方法
like.lambda(123);
}
}
/**
* 定义一个函数接口
*/
interface ILike{
void lambda(int i);
}
总结
1、lambda表达式只能有一行代码的情况下才能简化成为一行,如果有多行,那么就用代码块包裹
2、前提是接口为函数式接口(只有一个抽象类)
3、多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号