Java–Lmada表达式与内部函数(静态内部函数、局部内部函数、匿名内部函数)的简单对比使用
1. Lamada表达式的简单介绍:
- 基本释义:
Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。 - 语法格式:
lambda 表达式的语法格式如下:
(parameters) -> expression 或 (parameters) ->{ statements; }
- 重要特征:
- 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
- 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
- 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
- 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
- 使用条件:
函数式接口:一个接口只包含唯一一个抽象方法
用Lamda表达式来创建函数式接口的对象
public interface A{
public abstract void B();
}
2.简单例子
- 创建接口以及接口实现类
interface LoveYou{
void Yue();
}
class Love implements LoveYou{
@Override
public void Yue() {
System.out.println("I Love You------Yue");
}
}
- 正常创建对象并调用方法输出
public static void main(String[] args) {
LoveYou love = new Love();
System.out.print("正常创建对象并调用方法输出:");
love.Yue();
- 静态内部函数、局部内部函数、匿名内部函数、Lmada表达式方式对比输出
public class Lamda {
//静态内部类
static class Love1 implements LoveYou{
@Override
public void Yue() {
System.out.println("I Love You------Yue1");
}
}
public static void main(String[] args) {
LoveYou love = new Love();
System.out.print("正常创建对象并调用方法输出:");
love.Yue();
love =new Love1();
System.out.print("静态内部类方式:");
love.Yue();
//局部内部类
class Love2 implements LoveYou{
@Override
public void Yue() {
System.out.println("I Love You------Yue2");
}
}
System.out.print("局部内部类方式:");
love =new Love2();
//匿名内部类
love = new LoveYou() {
@Override
public void Yue() {
System.out.println("I Love You------Yue3");
}
};
System.out.print("匿名内部类方式:");
love.Yue();
//Lamda表达式
love = ()->{
System.out.print("Lmada表达式方式:");
System.out.println("I Love You------Yue4");
};
love.Yue();
}
}
interface LoveYou{
void Yue();
}
class Love implements LoveYou{
@Override
public void Yue() {
System.out.println("I Love You------Yue");
}
}