共计 1838 个字符,预计需要花费 5 分钟才能阅读完成。
JDK 新个性
一.Lambda 表达式
1. 体验 Lambda 表达式
需要: 启动一个线程, 在控制台输入一句话: 多线程程序启动了
形式 1:
●定义一个类 MyRunnable 实现 Runnable 接口, 写 run()办法
●创立 MyRunnable 类的对象
●创立 Thread 类的对象,把 MyRunnable 的对象作为结构参数传递
●启动线程
形式 2:
●匿名外部类的形式改良
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(“多线程程序启动了“);
}
}).start();
办法形式参数为空,阐明调用办法时不须要传递参数。
办法返回值类型位 void 时,阐明办法执行没有后果返回。
办法体中的内容,是咱们具体要做的事。
形式 3:
●Lambda 表达式的形式改良
new Thread(()-> {
System.out.println(“ 多线程程序启动了“);
}).start();
():外面没有内容,能够看成是办法形式参数为空。
->:用箭头指向前面要做的事。
{}:蕴含一段代码,称之为代码块,能够看成是办法体中的内容。
组成 Lambda 表达式的三要素:形式参数,箭头,代码块。
Lambda 表达式的格局
●格局: (形式参数)-> {代码块}
●形式参数: 如果有多个参数,参数之间用逗号隔开; 如果没有参数, 留空即可
●->: 由英文中画线和大于符号组成,固定写法。代表指向动作
●代码块: 是咱们具体要做的事件,也就是以前咱们写的办法体内容
Llambda 表达式的应用前提:
有一个接口;
接口中有且只有一个形象办法。
2. Lambda 表达式的省略模式
省略规定:
●参数类型可省略。然而有多个参数的状况下,不能只省略一个
●如果参数有且仅有一个,那么小括号能够省略
●如果代码块的语句只有一条,能够省略大括号和分号,甚至是 return。
3. Lambda 表达式的注意事项
注意事项:
●应用 Lambda 必须要有接口, 并且要求接口中有且仅有一个形象办法
●必须有上下文环境, 能推出 Lambda 对应的接口
依据局部变量的赋值得悉 Lambda 对应的接口: Runnable r= () -> System.out.println(“Lambda 表达式 ”);
依据调用办法的参数得悉 Lambda 对应的接口: new Thread(() -> System.out.println(“Lambda 表达式 ”).start();
4. Lambda 表达式和匿名外部类的区别
所需类型不同:
●匿名外部类: 能够是接口,也能够是抽象类能够具体类
●Lambda 表达式: 只能是接口
应用限度不同:
●如果接口中有仅有一个形象办法, 能够用 Lambda 表达式,能够应用匿名外部类
●如果接口中多于一个形象办法, 只能应用匿名外部类,而不能应用 Lambda 表达式
实现原理不同:
●匿名外部类: 编译之后,产生一个独自的.class 字节码文件。
●Lambda 表达式: 编译之后, 没有一个独自的.class 字节码文件。对应的字节码在运行的时候动静生成。
二. 接口新个性
1. 接口组成更新概述
接口的组成:
●常量
public static final
●形象办法
public abstract
●默认办法(Java 8)
●静态方法(Java 8)
●公有办法(Java9)
2. 接口中默认办法
接口中默认办法的定义格局:
●格局: public default 返回值类型 办法名 (参数列表){}
●范例: public default void show3(){}
接口中默认办法的注意事项:
●默认办法不是形象办法,所以不强制被重写。然而能够被重写,写的时候去掉 default 关键字
●public 能够省略, default 不能省略
3. 接口中静态方法
接口中静态方法的定义格局:
●格局: public static 返回值类型 办法名 (参数列表){}
●范例: public static void show() {}
接口中静态方法的注意事项:
●静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
●public 能够省略, static 不能省略
4. 接口中公有办法
接口中公有办法的定义格局:
●格局 1: private 返回值类型 办法名 (参数列表){}
●范例 1: private void show(){}
●格局 2: private static 返回类型 办法名名(参数列表){}
●范例 2: private static void method(){}
接口中公有办法的注意事项:
●默认办法能够调用公有的静态方法和非静态方法
●静态方法只能调用公有的静态方法