# Java教程 - Java8新特性
Java 8 (又称为jdk 1.8) 是Java 语言开发的一个主要版本,是 Java 5 以来最具革命性的版本。Java 8为Java语言、编译器、类库、开发工具与JVM带来了大量新特性。
下面介绍一下 Java8 常用的新特性。
# 1.1 接口的默认方法与静态方法
以前的版本定义接口是不能有实现机制的,现在可以使用 default
关键字声明默认方法,然后子类可以重写,也可以直接使用了。另外接口中也可以声明静态方法并提供方法的实现。以后的工具类就可以参考接口来设计,例如大量的方法被添加到 java.util.Collection
接口中去,例如 stream(),parallelStream(),forEach(),removeIf()等。
声明默认方法和静态方法:
interface FirstInterface {
// 方法和常量,默认就是public的
// 不写final static,默认就是常量
String key = "abc";
/**
* 定义默认方法
*/
default void commomMethod() {
System.out.println(key);
}
/**
* 定义静态方法
*/
static void firstMethod(int value) {
System.out.println(key + value);
}
}
//实现
public class InterfaceTest implements FirstInterface {
public static void main(String[] args) {
//调用静态方法
FirstInterface.firstMethod(123);
InterfaceTest test = new InterfaceTest();
test.commomMethod();
}
/**
* 重写默认方法
*/
@Override
public void commomMethod() {
System.out.println("你好");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
但是需要注意不能用默认方法来重写 equals()
、hashCode()
和 toString()
,接口不能提供对 Object
类的任何方法的默认实现。
# 1.2 Lambda表达式
在讲 Lambda
表达式之前需要先说函数式接口。
内容未完......