package com.test4;
public class JDK8Demo {
public static void main(String[] args) {
//要实现接口的方法:
//第一种,创建继承接口的实现类:
IEat ieat1 = new IEatImpl();
ieat1.eat();
//第二种,创建匿名内部类实现:
IEat ieat2 = new IEat(){
public void eat(){
System.out.println("eat bnananl");
}
};
ieat2.eat();
//第三种,使用JDK1.8新特性lambda方法:语法: (参数1,参数2,...) -> {代码块;};
/**
使用Lambda表达式的前提:接口里只有一个抽象方法
(1)没有参数时使用Lambda表达式
(2)带参数时使用Lambda表达式
(3)代码块中只有一句代码时使用Lambda表达式
(4)代码块中有多句代码块时使用Lambda表达式
(5)有返回值的代码块
(6)参数中使用final关键字
*/
//无参的Lambda表达式
IEat ieat3 = () -> {System.out.println("eat tomato");};
ieat3.eat();
//实现方法的代码块只有一句时,花括号可以省略
IEat ieat4 = () -> System.out.println("eat tomato");
ieat4.eat();
//带参数时
IEat ieat5 = (String name) -> {System.out.println("eat tomato"+name);};
ieat5.eat("tomato");
//带参数时类型也可以省去
IEat ieat6 = (name) -> {System.out.println("eat tomato"+name);};
ieat6.eat("tomato");
//带多个参数时类型也可以省去
IEat ieat6 = (name,thing) -> {System.out.println("eat tomato"+name+thing);};
ieat6.eat("tomato","thinig");
//接口里的方法参数使用final修饰时,Lambda表达式里的参数也必须带上final
IEat ieat7 = (final String name) -> {System.out.println("eat tomato"+name);};
ieat7.eat("tomato");
//有返回值时
IEat ieat8 = () -> {
System.out.println("eat tomato");
return 10;
};
ieat8.eat();
//有返回值时,且只有一句代码块时,且该代码块就是返回语句,花括号可以省去
IEat ieat9 = () -> 10; //return 10;renturn也要省去
ieat9.eat();
}
}
//只有一个抽象方法的接口
interface IEat{
public void eat();
}
class IEatImpl implements IEat{
public void eat(){
System.out.println("eat apple");
}
}
JDK1.8新特性Lambda语法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 引言 大家的安卓基础班课程是基于jdk7的,但是在每个学生开班入学的时候电脑上几乎都是安装的jdk8,因为大家...
- 背景 Jdk 1.8支持Lambda新特性,想试试直接在IDEA使用,于是创建一个web项目,着手准备使用时,发现...
- 一、接口的默认方法 Java 8允许在接口中添加非抽象的方法实现,只需要使用default关键字即可,这个特征又叫...
- 1.Lambda 表达式首先看看在老版本的Java中是如何排列字符串的:List names = Arrays....