码迷,mamicode.com
首页 > 编程语言 > 详细

java--lambda表达式

时间:2018-12-14 19:38:02      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:一个   cannot   常量   精简   str   ESS   声明   特性   抽象   

lambda表达式是java8的新特性,可以被看作 使用精简语法的 内部类。

基础语法

(parameters) -> expression
或
(parameters) ->{ statements; }

 

无参数无返回值 lambda:

import java.io.*;

public class Test {
    public static void main(String[] args) {

        Person p = () -> {System.out.println("带大括号"); };
        p.say();

        Person p1 = () -> System.out.println("不带大括号"); //省略大括号的前提:只有一行语句,如果是表达式,会被执行返回结果,消除(省略)return
        p1.say();

    }
}

/**
 *使用 lambda 表达式前提:
 * 1.必须是函数式接口(有且只有一个 抽象方法)
 * 2.可以有常量
 */
interface Person {
    //int num = 12;
    void say();
}

无参数有返回值 lambda:

import java.io.*;

public class Test {
    public static void main(String[] args) {

        Person p = () -> {return "带括号返回值"; };
        System.out.println(p.say());

        Person p1 = () -> "不带大括号返回值"; //省略大括号前提是:只有一行语句,如果是表达式,执行返回结果,消除(省略)return
        System.out.println(p1.say());

    }
}

/**
 *使用 lambda 表达式前提:
 * 1.必须是函数式接口(有且只有一个 抽象方法)
 */
interface Person {
    String say();
}

有参数有返回值 lambda:

import java.io.*;

public class Test {
    public static void main(String[] args) {

        Person p1 = (String s) -> {return "声明类型+带括号" + s; };
        System.out.println(p1.say("hello"));

        Person p2 = (s) -> "省略声明类型" +s;
        System.out.println(p2.say("hello"));

        Person p3 = s -> "省略声明类型+省略括号" + s;
        System.out.println(p3.say("hello"));
    }
}

/**
 *使用 lambda 表达式前提:
 * 1.必须是函数式接口(有且只有一个 抽象方法)
 */
interface Person {
    String say(String s);
}

 变量作用域

 可以引用 类常量、局部常量、接口常量,但是不能修改

import java.io.*;

public class Test {

    final static String str1 = "str1:标记final外层 类变量;";
    static String str2 = "str2:可以省略final,隐性具有final含义;";

    public static void main(String[] args) {

        final String str3 = "str3:局部变量。";

        Person p = () -> System.out.println(str1 + str2 + str3 + Person.str4);
        p.say();

    }
}


interface Person {
    String str4 = "str4:接口变量"; // 隐性final
    void say();
}

如果尝试对str4修改,报错:

error: cannot assign a value to final variable str4

java--lambda表达式

标签:一个   cannot   常量   精简   str   ESS   声明   特性   抽象   

原文地址:https://www.cnblogs.com/zhzhlong/p/10120454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!