Java中的函数指针
从Java 8开始,引入了lambda表达式,它充当函数指针。
Lambda表达式在Java 8中引入,被誉为Java 8最重要的特性。Lambda表达式促进了函数式编程,并大大简化了开发。
语法
lambda表达式的语法特征如下。
parameter -> expression body
以下是lambda表达式的几个重要特征。
- 可选类型声明 — 无需声明参数的类型。编译器可以根据参数的值推断出类型。
- 参数周围可选的小括号 — 单个参数无需用括号括起来。多个参数需要括号。
- 可选的大括号 — 如果表达式体包含单个语句,则无需使用大括号。
- 可选的return关键字 — 如果表达式体只有一个表达式用于返回值,则编译器会自动返回值。需要大括号来指示表达式返回值。
Lambda表达式示例
使用您选择的任何编辑器创建以下Java程序,例如,在C:\> JAVA中。
Java8Tester.java
public class Java8Tester {
public static void main(String args[]) {
Java8Tester tester = new Java8Tester();
//with type declaration MathOperation addition = (int a, int b) -> a + b;
//with out type declaration MathOperation subtraction = (a, b) -> a - b;
//with return statement along with curly braces MathOperation multiplication =
(int a, int b) -> { return a * b; };
//without return statement and without curly braces MathOperation division =
(int a, int b) -> a / b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
System.out.println("10 / 5 = " + tester.operate(10, 5, division));
//without parenthesis GreetingService greetService1 = message ->
System.out.println("Hello " + message);
//with parenthesis GreetingService greetService2 = (message) ->
System.out.println("Hello " + message);
greetService1.sayMessage("Mahesh");
greetService2.sayMessage("Suresh");
}
interface MathOperation {
int operation(int a, int b);
}
interface GreetingService {
void sayMessage(String message);
}
private int operate(int a, int b, MathOperation mathOperation) {
return mathOperation.operation(a, b);
}
}验证结果
使用javac编译器编译类,如下所示:
C:\JAVA>javac Java8Tester.java
现在运行Java8Tester,如下所示:
C:\JAVA>java Java8Tester
它应该产生以下输出:
10 + 5 = 15 10 - 5 = 5 10 x 5 = 50 10 / 5 = 2 Hello Mahesh Hello Suresh
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP