一、jdk8与jdk9接口新特性
1.1简介
在jdk1.8之后 接口不仅可以有抽象的方法,还可以有其他方法
增加的方法
jdk8:默认的方法和静态的方法
jdk9:私有的方法
3.影响:接口中可以有其他的成员方法 接口与抽象类的差距缩小 接口多继承多实现 使用接口是趋势
1.2默认的方法
1.使用default修饰的方法就是默认的方法
2.语法:
访问修饰符 default 方返回值类型 方法的名称(参数列表){
方法体
返回值
}
3.特点:
接口中的默认方法实现类不能重写
实现类的其他方法可以调用接口中的默认方法,
调用语法是 接口的名称.super.方法的名称()
1.3静态方法
1.使用static来修饰的方法就是静态方法
2.语法:
访问修饰符 static 方法返回值类型 方法的名称(参数列表){
方法体
返回值
}
3.特点:接口的实现类不能重写接口中静态方法
1.4私有方法
1.使用private修饰方法 只有jdk1.9之后才能使用
2.语法:
private 方法返回值类型 方法名称(参数列表){
方法体
返回值
}
3.注意点:
私有的方法可以使用默认的方法来调用
私有的静态方法只能是默认方法与静态方法调用
二、lambda表达式
2.1简介
1.本质:是一个匿名的函数型接口
2.函数型接口:接口中只能有一个抽象方法,可以有其他的方法
3.作用:简化匿名内部类的写法
4.语法:(参数)->{方法体}
5.Lambda表达式简化方式
1.如果方法只有一个参数 小括号和数据类型可以省略
2.如果方法体中只有一句话没有return的话就可以省略大括号和分号
3.如果方法体 只有一句话 且这话是return的话就可以省略掉大括号 和r分号以及return
三、函数型接口
1.概念:接口中只能有一个抽象方法,可以有默认方法,以及其他方法
2.注解:@FunctionalInterface 用来检查是否是函数型接口
3.函数型接口:作为方法的参数和作为方法的返回值
四、jdk8中四个函数型接口
4.1Supplier供给型接口
4.2 Consumer消费型函数接口
4.3Predicate断言型函数接口
4.4Function转换型函数接口
五、Stream
5.1简介
1.Stream 是一个接口主要是对数据进行过滤
2.Stream 提供了两类方法:延迟方法和终结方法延迟方法:Stream调用之后还是Stream对象 还可以继续使用其方法、
终结方法:Stream调用方法字符返回值不是Stream对象 不可以继续使用其方法
5.2 获取Stream对象
Collection.strem()
Stream of(T...values)
一个是Collection的方法,一个是Stream的方法
5.3常用的方法
5.4案例
public class Test {
public static void main(String[] args) {
List<String> list01=new ArrayList<>();
List<String> list02=new ArrayList<>();
List<Person> li=new ArrayList<>();
Collections.addAll(list01,"宫本武藏","宋公明","苏有朋","石头人","时传详","李 耳","庄子","洪七公");
Collections.addAll(list02,"帕瓦罗蒂","张三疯","赵薇薇","张自忠","孛儿只斤铁木 真","张天爱","张翠花");
Stream.concat(list01.stream().filter(s -> s.length()==3).limit(3),list02.stream().filter(s -> s.substring(0,1).equals("张")).skip(2)).map(s -> new Person(s)).forEach(p-> li.add(p));
System.out.println(li);
}
}
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public Person() {
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
}