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

更新于:2020年2月24日

2K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告