Java lambda表达式中形式参数的规则是什么?

Lambda表达式类似于具有参数bodyreturn 类型的方法。它也可以称为匿名函数 (没有名称的方法)。 

在lambda表达式中使用形式参数时,我们需要遵循一些规则。

  • 如果功能接口的抽象方法是零参数 方法,则箭头(->)的左侧必须使用空 括号

  • 如果功能接口的抽象方法是单参数方法,则括号 不是必需的。

  • 如果功能接口的抽象方法是多 参数 方法,则必须使用括号 。形式参数以逗号分隔, 并且可以与相应功能接口的顺序相同。

  • 形式参数的提及类型不是强制性的。如果我们没有提到形式参数的类型,那么它的类型可以由编译器从相应的Target  Type中确定

示例

interface Message {
   String hello(String message, String name, Gender gender);
}
enum Gender {
   MALE, FEMALE
}
public class LambdaFormalParameterTest {
   public static void main(String args[]) {
      Message message = (String msg, String name, Gender gender) -> {  // lambda expression         if(gender == Gender.MALE) {
            return "Hello Mr " + name + ", " + msg;
         } else {
            return "Hello Ms " + name + ", " + msg;
         }
      };
      System.out.println(message.hello("Good Morning!!!", "Adithya", Gender.MALE));
      System.out.println(message.hello("Good Morning!!!", "Ambica", Gender.FEMALE));
   }
}

输出结果

Hello Mr Adithya, Good Morning!!!
Hello Ms Ambica, Good Morning!!!